Split-actuator drive that coordinates fractional-wedge timing of aggressor and victim for effective victim feedforward

ABSTRACT

A method reduces the effect of accelerating/decelerating an “aggressor actuator” in a multi-actuator drive on a “victim actuator” in the drive. Measurements of fractional-wedge timing-offsets for an aggressor head are used to adjust the aggressor actuator commands that are inputted to a victim disturbance feedforward signal generator when a timing offset exists between the currently-used aggressor head and the aggressor head that was used to measure transfer functions for determining victim feedforward signals. When such a timing offset is equivalent to a specific fraction of the time period separating servo wedges, values of the aggressor actuator commands that are inputted to the victim disturbance feedforward signal generator may be modified based on the specific fraction. Feedforward signals may be modified when a timing offset exists between and the current timing of the currently-used victim head and an original timing of the currently-used victim head.

BACKGROUND

Magnetic hard disk drives (HDDs) have been employed in informationtechnology as a low-cost means for providing random access to largequantities of data. As the need for data storage has expanded, the arealdensity of information stored in HDDs has continuously increased. Inaddition to high storage capacity, the ability of an HDD to accessstored data quickly is also important. To meet the ever-increasingrequirements for high access performance and faster throughput, HDDshave been configured with multiple rotary actuators and associatedread/write channels that are designed to operate simultaneously. Thus,each rotary actuator enables the independent positioning of one or moremagnetic heads for reading and writing data, thereby greatly increasingthe throughput of such HDDs.

One drawback to the use of independent rotary actuators is that themechanical interaction between such actuators can affect positioningaccuracy of the magnetic heads when both actuators are in motion. Forexample, when one actuator is seeking to a targeted data track, the highaccelerations and changes in acceleration of the actuator can generatevibrations which will significantly affect the positioning accuracy ofthe other actuator while the other actuator is track following. Toreduce the effect of one actuator in a multi-actuator drive (theso-called “aggressor actuator”) on the positioning accuracy of anotheractuator in the multi-actuator drive (the so-called “victim actuator”),a victim feedforward signal is added to a microactuator control signalof the victim actuator in response to a voice-coil motor (VCM) controlsignal that is asserted by the aggressor actuator. This victimfeedforward signal is configured to compensate for disturbances in theradial position of a victim head caused by assertion of the aggressorVCM control signal.

Generally, a suitable victim feedforward signal can be generated basedon a transfer function that models the feedforward signal for the victimactuator as a function of a control signal asserted by the aggressoractuator. During manufacture, such a transfer function can be determinedfor each head of an HDD by injecting known disturbances into a controlsignal for the aggressor actuator and measuring changes to the radialposition of the victim head as the response. Such transfer functions arebased on the assumption that the difference in timing between a victimhead and an aggressor head crossing a particular point on a disk isrelatively small and remains unchanged. In practice, the servoinformation on each disk of an HDD is not perfectly aligned with theservo information on each other disk of the HDD. Therefore, the time atwhich each head of the HDD crosses a particular point on the associateddisk can vary slightly. Further, over the life of an HDD, mechanicalshocks, changes in temperature, changes in the relative position of thedisks, and changes in the relative positions of the heads can result infurther drift in timing between the various heads of the HDD. As aresult, transfer functions for determining victim feedforward signalscan become increasingly inaccurate, and disturbances caused by aggressoractuator acceleration and deceleration are more likely to affect victimhead position. Consequently, there is a need in the art for betterreducing the effect of movements of one actuator in a multi-actuatordrive on the positioning accuracy of another actuator in themulti-actuator drive.

SUMMARY

One or more embodiments provide systems and methods for reducing orcompensating for the effect of accelerating/decelerating an “aggressoractuator” in a multi-actuator drive on a “victim actuator” in the drive.Specifically, measurements of fractional-wedge timing-offsets for anaggressor head are used to adjust the aggressor actuator commands thatare inputted to a victim disturbance feedforward signal generator when atiming offset exists between the currently-used aggressor head and theaggressor head that was used to measure transfer functions fordetermining victim feedforward signals. When such a timing offset isequivalent to a specific fraction of the time period separating servowedges, values of the aggressor actuator commands that are inputted tothe victim disturbance feedforward signal generator are modified basedon the specific fraction. Additionally or alternatively, in someembodiments, feedforward signals generated by the victim disturbancefeedforward signal generator are modified when a timing offset existsbetween and the current timing of the currently-used victim head and anoriginal timing of the currently-used victim head, where the originaltiming was used to measure transfer functions for determining victimfeedforward signals. When such a timing offset is equivalent to aspecific fraction of the time period separating servo wedges, values offeedforward signals generated by the victim disturbance feedforwardsignal generator are modified based on the specific fraction.Additionally or alternatively, in some embodiments, timing offsetsbetween aggressor heads and victim heads are measured for driftthroughout the lifetime of the HDD. In such embodiments, values of theaggressor actuator commands that are inputted to the victim disturbancefeedforward signal generator are modified based on the newly measuredtiming offsets and/or feedforward signals generated by the victimdisturbance feedforward signal generator are modified based on the newlymeasured timing offsets.

According to an embodiment, a computer-implemented method of controllingmagnetic head position in a disk drive that includes a first head foraccessing a first recording surface and a second head for accessing asecond recording surface includes: determining first and second controlsignals that each cause a first actuator to position the first headrelative to the first recording surface, wherein the first controlsignal is based on a first position signal generated by the first headpassing over a first servo wedge disposed on the first recording surfaceand the second control signal is based on a second position signalgenerated by the first head passing over a second servo wedge disposedon the first recording surface; determining a feedforward value thatmodifies a third control signal that is determined based on a thirdposition signal, wherein the third position signal is generated by thesecond head passing over a third servo wedge disposed on the secondrecording surface and the third control signal causes a second actuatorthat is coupled to the second head to position the second head relativeto the second recording surface; determining that the third positionsignal is generated by the second head passing over the third servowedge; and modifying the third control signal with the feedforward valuein response to the second head passing over the third servo wedge,wherein the feedforward value is generated based on the first and secondcontrol signals.

According to an embodiment, a disk drive includes a first head foraccessing a first recording surface of the disk drive and a second headfor accessing a second recording surface of the disk drive and acontroller. The controller is configured to perform the steps of.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of embodimentscan be understood in detail, a more particular description ofembodiments, briefly summarized above, may be had by reference to theappended drawings. It is to be noted, however, that the appendeddrawings illustrate only typical embodiments and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 is a schematic view of an exemplary hard disk drive (HDD),according to an embodiment.

FIG. 2 schematically illustrates a partial side-view of multiple storagedisks and two independent actuator arm assemblies of the HDD of FIG. 1 .

FIG. 3 illustrates a recording surface of a storage disk with servowedges and concentric data storage tracks formed thereon, according toan embodiment.

FIGS. 4A-4C schematically illustrate various timing offsets that canoccur between two different read/write heads and/or servo wedges of theHDD of FIG. 1

FIG. 5 is a plot of timing offset magnitude between the read/write headsof an actuator arm assembly, according to some embodiments.

FIG. 6 is a plot of timing offset magnitude between the read/write headsof a first actuator arm assembly of a multi-actuator drive and oneread/write head of a second actuator arm assembly of the multi-actuatordrive, according to some embodiments.

FIG. 7 illustrates an operational diagram of the HDD of FIG. 1 , withsome elements of electronic circuits and a motor-driver chip shownconfigured according to one embodiment.

FIG. 8A schematically illustrates an aggressor VCM command buffer,according to an embodiment.

FIG. 8B schematically illustrates an aggressor VCM command buffer,according to another embodiment.

FIG. 8C schematically illustrates a recent aggressor VCM command buffer,according to an embodiment.

FIG. 9 schematically illustrates a victim feedforward value buffer,according to an embodiment.

FIG. 10A is a control diagram illustrating the generation andapplication of a victim feedforward control signal in the hard diskdrive of FIG. 1 , according to various embodiments.

FIG. 10B is a control diagram illustrating the generation andapplication of a victim feedforward control signal in the hard diskdrive of FIG. 1 , according to various embodiments.

FIG. 11 is a more detailed block diagram of a victim feedforward signalgenerator of a servo control loop, according to various embodiments.

FIG. 12A is a plot of VCM command values determined for a portion of anaggressor seek performed by an aggressor head when there is no timingoffset between the aggressor head and the victim head, according tovarious embodiments

FIG. 12B is a plot of VCM command values that are initially calculatedfor an aggressor seek and interpolated VCM command values that areactually used for determine a victim feedforward signal, according tovarious embodiments.

FIG. 13 is a plot of victim feedforward signal values and interpolatedvictim feedforward signal values, according to various embodiments.

FIG. 14 sets forth a flowchart of method steps for controlling magnetichead position in a multi-actuator hard disk drive, according to anembodiment.

FIG. 15 sets forth a flowchart of method steps for measuring timingshifts for each read/write head of a drive, according to an embodiment.

FIG. 16 sets forth a flowchart of method steps for determining valuesfor a victim feedforward generator in a multi-actuator hard disk drive,according to an embodiment.

FIG. 17 sets forth a flowchart of method steps for determining atransfer function that models the radial position error of a victim headas a function of a control signal applied to an aggressor actuator,according to an embodiment.

FIG. 18 sets forth a flowchart of method steps for determining atransfer function that models the radial position of a victim head as afunction of a disturbance added to a control signal that is applied to amicroactuator for positioning the victim head, according to anembodiment.

For clarity, identical reference numbers have been used, whereapplicable, to designate identical elements that are common betweenfigures. It is contemplated that features of one embodiment may beincorporated in other embodiments without further recitation.

DETAILED DESCRIPTION System Overview

FIG. 1 is a schematic view of an exemplary hard disk drive (HDD) 100,according to one embodiment. For clarity, HDD 100 is illustrated withouta top cover. HDD 100 is a multiple actuator drive, and includes one ormore storage disks 110, each including one or two recording surfaces onwhich a plurality of concentric data storage tracks are disposed. InFIG. 1 , only the top recording surface 112A of storage disk 110 isvisible. The one or more storage disks 110 are coupled to and rotated bya spindle motor 114 that is mounted on a base plate 116. Two or moreactuator arm assemblies 120A and 120B are also mounted on base plate116, and each of the assemblies includes one or more arm-mounted sliders121 with one or more magnetic read/write heads 127 that read data fromand write data to the data storage tracks of an associated recordingsurface, such as recording surface 112A.

One or more actuator arms 124 are included in actuator arm assembly120A, and one or more actuator arms 124 are included in actuator armassembly 120B. Actuator arm assembly 120A and the one or more actuatorarms 124 included therein are rotated together about a bearing assembly126 by a voice coil motor (VCM) 128A independently from actuator armassembly 120B. Likewise, actuator arm assembly 120B and the one or moreactuator arms 124 included therein are rotated together about bearingassembly 126 by a VCM 128B independently from actuator arm assembly120A. Thus, each of VCMs 128A and 128B moves a group of the sliders 121and read/write heads 127 radially relative to a respective recordingsurface of a storage disk 110 included in HDD 100, thereby providingradial positioning of a corresponding read/write head 127 over a desiredconcentric data on a recording surface, for example on recording surface112A. Spindle motor 114, the read/write heads 127, and VCMs 128A and128B are coupled to electronic circuits 130, which are mounted on aprinted circuit board 132.

Electronic circuits 130 include read channels 137A and 137B, amicroprocessor-based controller 133, random-access memory (RAM) 134(which may be a dynamic RAM and is used as one or more data buffers)and/or a flash memory device 135, and, in some embodiments, a flashmanager device 136. In some embodiments, read channels 137A and 137B andmicroprocessor-based controller 133 are included in a single chip, suchas a system-on-chip (SoC) 131. HDD 100 further includes a motor-driverchip 125 that accepts commands from microprocessor-based controller 133and drives spindle motor 114, and VCMs 128A and 128B and microactuators228 and/or 229 (not shown in FIG. 1 ). In the embodiment illustrated inFIG. 1 , HDD 100 is shown with a single motor-driver chip 125 thatdrives spindle motor 114 and VCMs 128A and 128B. In other embodiments,HDD 100 includes multiple motor-driver chips. In one such embodiment,for example, one motor-driver chip drives spindle motor 114, oneactuator (e.g., VCM 128A), and one microactuator (e.g., microactuator228), and the other motor-driver chip drives the other actuator (e.g.,VCM 128B) and another microactuator (e.g., microactuator 229). Further,in other embodiments, any other partition of the jobs of spindle motorcontrol, actuator control, and microactuator control can be implemented.Via a preamplifier (not shown), read/write channel 137A communicateswith read/write heads 127 of actuator arm assembly 120A and read/writechannel 137B communicates with read/write heads 127 of actuator armassembly 120B. The preamplifiers are mounted on a flex-cable, which ismounted on either base plate 116, one of actuators 120A or 120B, orboth.

When data are transferred to or from a particular recording surface ofHDD 100, one of the actuator arm assemblies 120A or 120B moves in an arcbetween the inner diameter (ID) and the outer diameter (OD) of thestorage disk 110. The actuator arm assembly accelerates in one angulardirection when current is passed in one direction through the voice coilof the corresponding VCM and accelerates in an opposite direction whenthe current is reversed, thereby allowing coarse control of the radialposition of the actuator arm assembly and the attached read/write headwith respect to the particular storage disk 110.

Fine radial positioning of each read/write head 127 is accomplished witha respective microactuator 129. The microactuator 129 for eachread/write head 127 is mechanically coupled to the actuator arm 124 thatcorresponds to the read/write head 127. Each microactuator 129 typicallyincludes one or more piezoelectric elements and is configured to move acorresponding read/write head 127 radially a small distance, for exampleon the order of a few tens or hundreds of nanometers. When employedtogether, microactuators 129 and voice coil motors 128A and 128B aresometimes referred to as dual-stage actuators, where voice coil motor128A or 128B is the prime mover and each microactuator 129 is asecond-stage actuator. Dual-stage actuators enable the servo system ofHDD 100 to attain more accurate tracking control.

In some embodiments, each microactuator 129 is mounted on a respectiveflexure arm 122, at a gimbal between the respective flexure arm 122 andthe corresponding slider 121. In such embodiments, each microactuator129 rotates the corresponding slider 121, causing radial motion(relative to corresponding recording surface) of the correspondingread/write head 127. Alternatively or additionally, in some embodiments,each microactuator 129 is mounted on an end of an actuator arm 124 or onthe flexure arm, itself, and moves the flexure arm 122 through arelatively large arc, for example on the order of a hundred trackwidths. In yet other embodiments, each microactuator 129 includes afirst piezoelectric or other movable element at the gimbal between therespective flexure arm 122 and the corresponding slider 121 and a secondpiezoelectric or other movable element at the end of the actuator arm124 or on the flexure arm. In such embodiments, each read/write head 127is provided with three-stage actuation in the radial direction.

In the embodiment illustrated in FIG. 1 , only one slider 121, oneflexure arm 122, one actuator arm 124, and one read/write head 127 areshown for actuator arm assembly 120A and only one slider 121, oneflexure arm 122, one actuator arm 124, and one read/write head 127 areshown for actuator arm assembly 120B. In other embodiments, each ofactuator arm assemblies 120A and 120B can include a plurality ofactuator arms, sliders, flexure arms, and read/write heads. Further, insome embodiments, HDD 100 can include more than two actuator armassemblies, each rotated about bearing assembly 126 by a respective VCMindependently from each other. In other embodiments, additionalactuators may rotate about other bearing assemblies.

FIG. 2 schematically illustrates a partial side-view of multiple storagedisks 110A-110D and two independent actuator arm assemblies 120A and120B of HDD 100, according to an embodiment. The recording surfaces ofmultiple storage disks 110A and 110B are each accessed by one of theread/write heads included in the independent actuator arm assembly 120A(e.g., read/write heads 227A, 227B, 227C, and 227D), and the recordingsurfaces of multiple storage disks 110C and 110D are each accessed bythe read/write heads included in the independent actuator arm assembly120B (e.g., read/write heads 227E, 227F, 227G, and 227H). Thus, in theembodiment illustrated in FIG. 2 , HDD 100 is configured with multiplestorage disks 110A-110D having a total of eight recording surfaces112A-112H and multiple read/write heads 227A-227H, each corresponding toone of these recording surfaces. Specifically, in the embodimentillustrated in FIG. 2 , HDD 100 includes: a storage disk 110A withrecording surfaces 112A and 112B; a storage disk 110B with recordingsurfaces 112C and 112D; a storage disk 110C with recording surfaces 112Eand 112F; and a storage disk 110D with recording surfaces 112G and 112H.Thus, read/write head 227A reads data from and writes data to recordingsurface 112A, read/write head 227B reads data from and writes data tocorresponding recording surface 112B, and so on.

Read/write heads 227A-227H are disposed on sliders 221A-221H,respectively, and sliders 221A-221H (referred to collectively herein assliders 221) are respectively coupled to actuator arms 124A-124F viaflexure arms 222A-222H (referred to collectively herein as flexure arms222) as shown. In some embodiments, each of sliders 221A-221H is mountedon a corresponding one of flexure arms 222 via a microactuator 229A-229H(referred to collectively herein as microactuators 229), such as amicro-actuator (MA) second stage that includes two lead zirconatetitanate piezoelectric actuators attached to a baseplate of thecorresponding flexure arm 222. Alternatively, in some embodiments, eachof sliders 221A-221H is mounted directly on a corresponding one offlexure arms 222.

In the embodiment illustrated in FIG. 2 , flexure arm 222A is coupled toan actuator arm 124A, flexure arms 222B and 222C are coupled to anactuator arm 124B, flexure arm 222D is coupled to an actuator arm 124C,flexure arm 222E is coupled to an actuator arm 124D, flexure arms 222Fand 222G are coupled to an actuator arm 124E, and flexure arm 222H iscoupled to an actuator arm 124F. Actuator arms 124A-124F are referred tocollectively herein as actuator arms 124. In the embodiment illustratedin FIG. 2 , each of microactuators 228A-228H (referred to collectivelyherein as microactuators 228) is disposed at a base of flexure arms222A-222H, respectively, i.e., at an end of one of actuator arms 124.Alternatively or additionally, in some embodiments, microactuators229A-229H can be disposed proximate sliders 221A-221H, respectively,i.e., at a tip of flexure arms 222A-222H, respectively. In embodimentsin which microactuators 229 are disposed proximate sliders 221, each ofmicroactuators 229 can include a gimbal microactuator. In either case,each of microactuators 229 and/or 228 compensates for perturbations inthe radial position of sliders 221, so that read/write heads 227A-227Hfollow the proper data track on recording surfaces 112. Thus,microactuators 229 can compensate for vibrations of the disk, inertialevents such as impacts to HDD 100, and irregularities in recordingsurfaces 112 or in the written servo-pattern.

Actuator arms 124A-124C are included in actuator arm assembly 120A, andactuator arms 124D-124F are included in actuator arm assembly 120B. Inan embodiment of the invention, actuator arm assemblies 120A and 120Bare independently controlled and both rotate about bearing assembly 126(which includes a same shaft axis 226).

In positioning one of read/write heads 227A-227H over a correspondingrecording surface (i.e., one of recording surfaces 112A-112H), the servosystem determines an appropriate current to drive through the voice coilof the appropriate voice coil motor (i.e., either VCM 128A or 128B), anddrives said current using a current driver and associated circuitry,e.g., included in motor-driver chip 125. Typically, the appropriatecurrent is determined based in part on a position feedback signal of theread/write head 127, i.e., a position error signal (PES). The PES istypically generated by using servo patterns included in the servo wedgeson the recording surface as a reference. One embodiment of such arecording surface 112 is illustrated in FIG. 3 .

FIG. 3 illustrates a recording surface 312 of a storage disk 310 withservo wedges 300 and concentric data storage tracks 320 formed thereon,according to an embodiment. Recording surface 312 can be any ofrecording surfaces 112A-112H in FIG. 2 . Servo wedges 300 may be writtenon recording surface 312 by either a media writer, or by HDD 100 itselfvia a self-servo-write (SSW) process. Servo wedges 300 are typicallyradially aligned. In practice, servo wedges 300 may be somewhat curved.For example, servo wedges 300 may be configured in a spiral pattern thatmirrors the path that would be followed by a corresponding read/writehead 127 (shown in FIG. 1 ) if the read/write head 127 were to be movedacross the stroke of one of actuator arm assemblies 120A or 120B whilestorage disk 310 is not spinning. Such a curved pattern advantageouslyresults in the wedge-to-wedge timing being independent of the radialposition of the read/write head 127. For simplicity, servo wedges 300are depicted as substantially straight lines in FIG. 3 . Each servowedge 300 includes a plurality of servo sectors 350 containing servoinformation that defines the radial position and track pitch, i.e.,spacing, of data storage tracks 320.

Data storage tracks 320 for storing data are located in data sectors325, and are positionally defined by the servo information written inservo sectors 350. The region between two servo sectors may contain morethan, equal to, or less than one data sector, including the possibilityof fractional data-sectors. Each servo sector 350 encodes a referencesignal that is read by the read/write head 127 as the read/write head127 passes over the servo sector. Thus, during read and writeoperations, the read/write head 127 can be positioned above a desireddata storage track 320. Typically, the actual number of data storagetracks 320 and servo wedges 300 included on recording surface 312 isconsiderably larger than that illustrated in FIG. 3 . For example,recording surface 312 may include hundreds of thousands of concentricdata storage tracks 320 and hundreds of servo wedges 300.

Timing Offsets in Multi-Actuator HDDs

As noted previously, when one actuator of a multiple-actuator HDD (theso-called “aggressor actuator”) is seeking to a targeted data storagetrack, cross-actuator coupling can generate vibrations which cansignificantly affect the positioning accuracy of the other actuator (theso-called “victim actuator”). In particular, the high accelerations andchanges in acceleration of the aggressor actuator are likely to affectthe positioning accuracy of the victim actuator when the victim actuatoris attempting to closely follow a specific data track, for exampleduring a read or write operation. To reduce the effects of theseinter-mechanical interactions between an aggressor and a victimactuator, victim disturbance feedforward control schemes have beendeveloped, in which a feedforward control signal is asserted by a victimactuator. The feedforward control signal is determined as a function ofthe VCM commands asserted by the aggressor actuator, and is intended toreduce or compensate for the effect on the victim actuator of the VCMcommands asserted by the aggressor actuator. However, the effectivenessof such victim disturbance feedforward control signals can be adverselyaffected by differences in timing (referred to herein as “timingoffsets”) between a victim head and an aggressor head. Such timingoffsets are described below in conjunction with FIG. 4A-4C, FIG. 5 , andFIG. 6 .

FIGS. 4A-4C schematically illustrate various timing offsets that canoccur between two different read/write heads of HDD 100. FIG. 4Aillustrates a timing offset 413 caused by a circumferential displacementbetween the two different read/write heads; FIG. 4B illustrates a timingoffset 433 caused by a circumferential displacement between servo wedgesassociated with the two different read/write heads; and FIG. 4Cillustrates a timing offset 453 caused by a combination of acircumferential displacement between the two different read/write headsand a circumferential displacement between servo wedges associated withthe two different read/write heads.

For ease of description, in FIGS. 4A-4C, timing offset 413, timingoffset 433, and timing offset 453 are each depicted as a physicaldisplacement in the circumferential (down-track) direction. One of skillin the art will readily understand that, in practice, timing offset 413corresponds to the duration of time required for a read/write head tomove across the physical displacement depicted as timing offset 413,timing offset 433 corresponds to the duration of time required for aread/write head to move across the physical displacement depicted astiming offset 433, and timing offset 453 corresponds to the duration oftime required for a read/write head to move across the physicaldisplacement depicted as timing offset 453. Further, timing offset 413,timing offset 433, and timing offset 453 are depicted between read/writeheads that are each associated with a different actuator arm assembly ofan HDD. However, such timing offsets can also occur between read/writeheads that are both associated with the same actuator arm assembly.

In FIG. 4A, read/write head 227A moves circumferentially relative to aportion 405 of recording surface 112A along a data track 401 whileread/write head 227E moves circumferentially relative to a portion 406of recording surface 112E along a data track 402. As shown, read/writehead 227A is offset from read/write head 227E in the circumferential(down-track) direction and, as a result, crosses a rising edge 411A of aservo wedge 411 on recording surface 112A substantially sooner thanread/write head 227E crosses a rising edge 412A of a servo wedge 412 onrecording surface 112E. That is, there is a timing offset 413 betweenthe time that read/write head 227A crosses rising edge 411A and the timethat read/write head 227E crosses rising edge 412A. It is noted that inFIG. 4A, timing offset 413 occurs even though rising edge 411A andrising edge 412A are closely aligned circumferentially.

In some instances, timing offset 413 can be caused at the time ofmanufacture by misalignment of read/write head 227A and read/write head227E in the circumferential direction, differential thermal expansionduring operation between the actuator arm coupled to read/write head227A and the actuator arm coupled to read/write head 227E, shifts in therelative position of read/write head 227A and read/write head 227E dueto shocks experienced during the lifetime of HDD 100, and the like. Insuch instances, the timing offset 413 associated with a particular servowedge of recording surface 112A and recording surface 112E can often besubstantially the same for each servo wedge of recording surface 112Aand recording surface 112E. In some instances, the magnitude of timingoffset 413 can be a significant fraction of the time interval requiredfor a read/write head to move across the circumferential separationbetween adjacent servo wedges, for example 5%, 10%, 20%, or more.

In FIG. 4B, read/write head 227B moves circumferentially relative to aportion 425 of recording surface 112B along a data track 421 whileread/write head 227F moves circumferentially relative to a portion 426of recording surface 112F along a data track 422. As shown, read/writehead 227B and read/write head 227F are substantially aligned in thecircumferential direction. However, a servo wedge 431 on recordingsurface 112B is circumferentially offset from a corresponding servowedge 432 on recording surface 112F. As a result, read/write head 227Bcrosses a rising edge 431A of a servo wedge 431 before read/write head227F crosses a rising edge 432A of a servo wedge 432. That is, there isa timing offset 433 between the time that read/write head 227B crossesrising edge 431A and the time that read/write head 227F crosses risingedge 432A.

In some instances, timing offset 433 can be caused by servo wedges thatare imprecisely written on recording surface 112B and/or recordingsurface 112F at the time of manufacture. In such instances, the timingoffset 433 associated with a particular servo wedge of recording surface112B and recording surface 112F can often be substantially the same foreach servo wedge of recording surface 112B and recording surface 112F.Alternatively or additionally, in some instances, timing offset 433 canbe caused by a shift in relative position between recording surface 112Band recording surface 112F, for example due to an impact or otherphysical shock experienced during the lifetime of HDD 100. In suchinstances, the timing offset 433 associated with a particular servowedge of recording surface 112B and recording surface 112F generallyvaries for each servo wedge of recording surface 112A and recordingsurface 112E, for example sinusoidally. In some instances, the magnitudeof timing offset 433 can be a significant fraction of the time intervalrequired for a read/write head to move across the circumferentialseparation between adjacent servo wedges, for example 5%, 10%, 20%, ormore.

In FIG. 4C, read/write head 227C moves circumferentially relative to aportion 445 of recording surface 112C along a data track 441 whileread/write head 227G moves circumferentially relative to a portion 446of recording surface 112G along a data track 442. As shown, a servowedge 451 on recording surface 112C is circumferentially offset from acorresponding servo wedge 452 on recording surface 112G by acircumferential displacement 455. Further, read/write head 227C andread/write head 227G are also circumferentially offset from each other.Therefore, read/write head 227G trails read/write head 227Ccircumferentially by a circumferential displacement 454. As a result,read/write head 227C crosses a rising edge 451A of servo wedge 451before read/write head 227G crosses a rising edge 452A of servo wedge452. That is, there is a timing offset 453 that corresponds to the timeinterval required for read/write head 227G to move across acircumferential distance equivalent to the sum of circumferentialdisplacement 454 and circumferential displacement 455. Timing offset 453can have a magnitude similar to or greater than timing offset 413,timing offset 433, or a combination of both.

Ideally, read/write heads and servo wedges of an HDD are alignedcircumferentially so that the above-described timing offset 413, timingoffset 433, and timing offset 453, are of insignificant magnitude. Inpractice, such timing offsets can be a significant fraction of the timeinterval required for a read/write head to move across thecircumferential separation between adjacent servo wedges, as describedbelow in conjunction with FIG. 5 .

FIG. 5 is a plot of timing offset magnitude between read/write heads227A-227D of actuator arm assembly 120A, according to some embodiments.More specifically, FIG. 5 shows timing offset magnitudes (referred tocollectively herein as “timing offsets 500”) for read/write heads227A-227D relative to read/write head 227A. As shown, read/write head227A has a timing offset 501 relative to read/write head 227A,read/write head 227B has a timing offset 502 relative to read/write head227A, read/write head 227C has a timing offset 503 relative toread/write head 227A, and read/write head 227D has a timing offset 504relative to read/write head 227A.

In FIG. 5 , the magnitudes of timing offsets 500 are depicted in termsof “wedges,” where one “wedge” references a time interval T_(wedge) thatis required for a read/write head to move across the circumferentialseparation between the starts of two adjacent servo wedges. For example,timing offset 502 of read/write head 227B has a magnitude of 0.15 servowedges. As such, timing offset 502 indicates that read/write head 227Blags behind read/write head 227A by 0.15 servo wedges. That is, giventhat read/write head 227A crosses at a time TO a reference point (suchas a leading edge) associated with a first servo wedge on the recordingsurface that corresponds to read/write head 227A, therefore read/writehead 227B crosses a similar reference point on the recording surfacethat corresponds to read/write head 227B at a time T1, where timeT1=T0+0.15(T_(wedge)). Similarly, timing offset 503 indicates thatread/write head 227C lags behind read/write head 227A by 0.05 servowedges, and therefore crosses a similar reference point on the recordingsurface that corresponds to read/write head 227C at a time T2, wheretime T2=T0+0.05(T_(wedge)). Further, timing offset 504 indicates thatread/write head 227D leads read/write head 227A by 0.10 servo wedges,and therefore crosses a similar reference point on the recording surfacethat corresponds to read/write head 227D at a time T3, where timeT3=T0−0.10(T_(wedge)). As shown, read/write head 227A has no timingoffset with itself, and therefore has a timing offset of 0.

In some instances, timing offsets 500 can vary for each servo wedge thatis crossed by read/write heads 227A-227D. In such instances, whenrecording surfaces of HDD 100 include K servo wedges, there are Kdifferent timing offsets 501 for read/write head 227A, K differenttiming offsets 502 for read/write head 227B, K different timing offsets503 for read/write head 227C, and K different timing offsets 504 ofread/write head 227D. Thus, in such instances, FIG. 5 shows timingdifferences 500 for a single servo wedge.

Timing offsets 500 of FIG. 5 are associated with the various read/writeheads of a single actuator of HDD 100, such as VCM 128A. In amulti-actuator HDD, there are generally timing offsets between each ofthe multiple read/write heads of one actuator and the multipleread/write heads of the other actuator. Such timing offsets aredescribed below in conjunction with FIG. 6 .

FIG. 6 is a plot of timing offset magnitude between the read/write headsof a first actuator arm assembly of a multi-actuator drive and oneread/write head of a second actuator arm assembly of the multi-actuatordrive, according to some embodiments. FIG. 6 includes initial timingoffsets 600, which are present between the read/write heads of the firstactuator arm assembly and one read/write head of the second actuator armassembly at the time of manufacture of HDD 100. In the embodimentillustrated in FIG. 6 , initial timing offsets 600 for read/write heads227A-227D of actuator arm assembly 120A (shown in FIG. 2 ) relative toread/write head 227E of actuator arm assembly 120B (shown in FIG. 2 )are shown. Initial timing offsets 600 include an initial timing offset601 of read/write head 227A relative to read/write head 227E, an initialtiming offset 602 of read/write head 227B relative to read/write head227E, an initial timing offset 603 of read/write head 227C relative toread/write head 227E, and an initial timing offset 604 of read/writehead 227D relative to read/write head 227E.

Similar to timing offsets 500 of FIG. 5 , initial timing offsets 600indicate that each of read/write heads 227A-227D can either lag behindor lead read/write head 227E. Further, in some instances, initial timingoffsets 600 can vary for each servo wedge that is crossed by read/writeheads 227A-227E. In such instances, when recording surfaces of HDD 100include K servo wedges, there are K different initial timing offsets 601for read/write head 227A, K different initial timing offsets 602 forread/write head 227B, K different initial timing offsets 603 forread/write head 227C, and K different initial timing offsets 604 ofread/write head 227D. Thus, in such instances, FIG. 6 shows initialtiming differences 600 for a single servo wedge.

FIG. 6 also shows subsequent timing offsets 650, which are timingoffsets for read/write heads 227A-227D relative to read/write head 227Eat some time during the lifetime of HDD 100. Subsequent timing offsets650 include a subsequent timing offset 651 of read/write head 227Arelative to read/write head 227E, a subsequent timing offset 652 ofread/write head 227B relative to read/write head 227E, a subsequenttiming offset 653 of read/write head 227C relative to read/write head227E, and a subsequent timing offset 654 of read/write head 227Drelative to read/write head 227E.

Subsequent timing offsets 650 may develop or be present in HDD 100 aftera specific period of time, a specific quantity of operating time by HDD100, and/or after a physical shock is experienced by HDD 100. Subsequenttiming offsets 650 illustrate that the magnitude of timing offsetsbetween the read/write heads of one actuator arm assembly of amulti-actuator drive and one read/write head of another actuator armassembly of the multi-actuator drive can vary or drift over time frominitial timing offsets 600. That is, a shift can occur in the timingrelationship between one or more read/write heads of one actuator armassembly and one or more read/write heads of the another actuator armassembly of the multi-actuator drive. Such shifts are referred to hereinas “timing shifts,” and, in some embodiments, can significantly affectthe accuracy of certain victim disturbance feedforward control schemes.For example, in the embodiment illustrated in FIG. 6 , there is a timingshift 661 between initial timing offset 601 and timing offset 651, atiming shift 662 between initial timing offset 602 and timing offset652, a timing shift 663 between initial timing offset 603 and timingoffset 653, and a timing shift 664 between initial timing offset 604 andtiming offset 654 (referred to collectively herein as “timing shifts660”). Generally, a feedforward transfer function that generates afeedforward control signal for a victim actuator may assume an initialtiming offset 600 exists between an aggressor head and a victim headthat is changed by a timing shift 660. As a result, the presence oftiming shifts 660 can reduce the accuracy of the feedforward controlsignal that is generated based on such a transfer function.

In some instances, a particular timing shift 660 can be caused by achange in the timing of a single read/write head. For example, in someinstances, timing shift 661 occurs due to a circumferential displacement(or other timing change) of either read/write head 227A or read/writehead 227E. It is noted that when a circumferential displacement (orother timing change) of read/write head 227E occurs, the effect of sucha timing change affects all of subsequent timing offsets 650.Additionally or alternatively, in some instances, a particular timingshift 660 can be caused by a change in the timing of both read/writeheads associated with the timing shift. For example, in such aninstance, timing shift 661 occurs due to a circumferential displacement(or other timing change) of read/write head 227A and of read/write head227E. Further, similar to timing offsets 500 and initial timing offsets600, timing shifts 660 can vary for each servo wedge that is crossed byread/write heads 227A-227D.

Feedforward Control Signal Based on Aggressor Operation

In some embodiments, to reduce or compensate for the effect of the VCMcommands asserted by the aggressor actuator on the position of a victimhead, a feedforward signal for a victim actuator is determined as afunction of the VCM commands asserted by the aggressor actuator. In suchembodiments, the feedforward control signal may be generated based on atransfer function that models a feedforward correction signal for thevictim head as a function of a control signal supplied to the aggressoractuator. For example, determination of the transfer function for aparticular victim head can include a procedure that involves addingknown disturbances to a control signal for an actuator that is currentlydesignated as the aggressor actuator and measuring the radial positionof the victim head in response to each of the added disturbances.

It is noted that the mechanical disturbances that affect victim headposition are caused by the accelerations and decelerations of theaggressor actuator itself, and therefore are independent of whichparticular aggressor head is the active head when determining theabove-described transfer function. Thus, in some embodiments, the sameaggressor head can be used when determining the transfer function foreach different victim head, and is referred to herein as a “baseaggressor head” for purposes of description. In such embodiments, thefractional-wedge timing offsets between each particular victim head andthe base aggressor head are generally different, and can have amagnitude that is a significant fraction of a wedge, as illustrated bytiming offsets 600. However, in such embodiments, the effect on theresponse in position of a particular victim head by the timing offsetbetween that particular victim head and the base aggressor head isincorporated into the transfer function of that particular victim head.Consequently, in operation, when the base aggressor head is the activehead, the timing offset between that particular victim head and theaggressor head is inherently accounted for, as long as that timingoffset remains substantially the same and does not drift to anothervalue. By contrast, when the base aggressor head is not the active head,the timing offset between that particular victim head and the aggressorhead can affect the accuracy of the feedforward correction signal forthat particular victim head. This is because, as illustrated by timingoffsets 500 in FIG. 5 , each read/write head associated with aparticular actuator can have a timing offset from each of the otherread/write heads that is a significant fraction of a servo wedge inmagnitude. As a result, the transfer function on which the feedforwardcorrection signal is based is determined via measurements of victim headresponse that assume a different timing offset between the victim headand the aggressor head than is actually present. Thus, in such aninstance, the effectiveness of the victim disturbance feedforwardcontrol signal can be degraded.

According to various embodiments, measurements of fractional-wedgetiming-offsets between an aggressor head and a victim head are used toadjust the aggressor actuator commands that are inputted to a victimdisturbance feedforward signal generator. In some embodiments, when atiming offset exists between the aggressor head and the victim head thatis equivalent to a specific fraction of the timing difference betweenthe starts of adjacent servo wedges, values of the aggressor actuatorcommands that are inputted to the victim disturbance feedforward signalgenerator are modified based on the specific fraction. Additionally oralternatively, in some embodiments, feedforward signals generated by thevictim disturbance feedforward signal generator are modified based onthe specific fraction. In some embodiments, the victim disturbancefeedforward signal is added to a microactuator control signal of thevictim actuator in response to a VCM control signal that is applied tothe aggressor actuator. One such embodiment is described below inconjunction with FIGS. 7-11 .

FIG. 7 illustrates an operational diagram of HDD 100, with some elementsof electronic circuits 130 and motor-driver chip 125 shown configuredaccording to one embodiment. As shown in FIG. 7 , HDD 100 is configuredto coordinate fractional-wedge timing of aggressor and victim actuators,according to various embodiments. For example, in some embodiments,values of the aggressor actuator commands that are inputted to a victimdisturbance feedforward signal generator are modified based on aspecific fractional-wedge timing offset, and in some embodiments, valuesof feedforward signals generated by the victim disturbance feedforwardsignal generator are modified based on a specific fractional-wedgetiming offset. Generally, an actuator of HDD 100 is considered a victimactuator while performing a position-sensitive operation, such asservoing over a data track to read data from and/or write data to thedata track. An actuator of HDD 100 is considered an aggressor actuatorwhen performing a seek operation while another actuator of themulti-actuator HDD is currently a victim actuator.

HDD 100 is connected to a host 10, such as a host computer, via a hostinterface 20, such as a serial advanced technology attachment (SATA) busor a Serial Attached Small Computer System Interface (SAS) bus. Asshown, microprocessor-based controller 133 includes one or more centralprocessing units (CPU) 701 or other processors, a first servo controller715, a second servo controller 716, a hard disk controller (HDC) 702, aDRAM 134, and read/write channels 137A and 137B. Motor-driver chip 125includes VCM driver circuits 713, MA driver circuits 717, and a spindlemotor (SPM) control circuit 714. DRAM 134 may be integrated on the samedie as the controller 133, included in a separate die in the samepackage as the controller 133, or included in a separate package mountedon circuit board 130.

HDD 100 further includes preamplifiers 720A and 720B, which can be eachmounted on actuator arm assemblies 120A and 120B or elsewhere within thehead and disk assembly (HDA) of HDD 100. Preamplifier 720A supplies awrite signal (e.g., current) to read/write head 127A in response towrite data input from read/write channel 137A. Similarly, preamplifier720B supplies a write signal (e.g., current) to read/write head 127B inresponse to write data input from read/write channel 137B. In addition,preamplifier 720A amplifies a read signal output from to read/write head127A and transmits the amplified read signal to read/write channel 137A,and preamplifier 720B amplifies a read signal output from to read/writehead 127B and transmits the amplified read signal to read/write channel137B.

CPU 701 controls HDD 100, for example according to firmware stored inflash memory device 135 or another nonvolatile memory, such as portionsof recording surfaces 112A-112H. For example, CPU 701 manages variousprocesses performed by HDC 702, read/write channels 137A and 137B,read/write heads 127A-127H, recording surfaces 112A-112H, and/ormotor-driver chip 125. Such processes include a writing process forwriting data onto recording surfaces 112A-112H and a reading process forreading data from recording surfaces 112A-112H.

In some embodiments, the first servo system of HDD 100 (e.g., CPU 701,read/write channel 137A, preamplifier 720A, first servo controller 715,voice-coil motor 128A, and a suitable microactuator 228 or 229) performspositioning of a read/write head 127 included in actuator arm assembly120A (e.g., read/write head 127A) over a corresponding recording surface(e.g., recording surface 112A), during which CPU 701 determines anappropriate current to drive through the voice coil of VCM 128A.Typically, the appropriate current is determined based in part on aposition feedback signal of the read/write head, i.e., a position errorsignal (PES). Similarly, the second servo system of HDD 100 (e.g., CPU701, read/write channel 137B, preamplifier 720B, second servo controller716, voice-coil motor 128B, and a suitable microactuator 228 or 229)performs positioning of a read/write head 127 included in actuator armassembly 120B (e.g., read/write head 127D) over a correspondingrecording surface (e.g., recording surface 112D), during which CPU 701determines an appropriate current to drive through the voice coil of VCM128B. Although a single CPU 701 is shown here, it is possible thatmultiple CPUs might be used (for example, one or more CPUs for eachactuator).

In the embodiment illustrated in FIG. 7 , various links are shownbetween certain elements of HDD 100 for enablement of certainembodiments. In some embodiments, additional and/or alternative linksbetween certain elements of HDD 100 may exist for operation of HDD 100,but are not shown for clarity and ease of description. Such additionaland/or alternative links would be known to one of ordinary skill in theart.

In the embodiment illustrated in FIG. 7 , microprocessor-basedcontroller 133 includes a single CPU 701 incorporated into a single SoC131. In alternative embodiments, microprocessor-based controller 133includes more than one CPU. In such embodiments, HDD 100 can include twoCPUs; one devoted to servo/spindle control and the other devoted to acombination of host-based and disk-control activities. In otheralternate embodiments, HDD 100 can include a CPU and one or moreseparate servo controllers, such as first servo controller 715 andsecond servo controller 716 shown in FIG. 7 . Alternatively oradditionally, in some embodiments, HDD 100 includes a separate SoC foreach actuator, where each SoC has two such CPUs. Further, in someembodiments, microprocessor-based controller 133 includes multiple motordriver chips. For instance, in one such embodiment, a first motor driverchip is dedicated for controlling the spindle motor, a first actuator,and a first microactuator, while a second motor driver chip is dedicatedfor controlling a second actuator and a second microactuator.

Read/write channels 137A and 137B are signal processing circuits thatencode write data input from HDC 702 and output the encoded write datato respective preamplifiers 720A and 720B. Read/write channels 137A and137B also decode read signals transmitted from respective preamplifiers720A and 720B into read data that are outputted to HDC 702. In someembodiments, read/write channels 137A and 137B each include a singleread channel and a single write channel, whereas in other embodiments,read/write channels 137A and 137B each include multiple write channelsand/or multiple read channels for read/write heads 127A-127H. HDC 702controls access to DRAM 134 by CPU 701, read/write channels 137A and137B, and host 10, and receives/transmits data from/to host 10 viainterface 20. In some embodiments, the components ofmicroprocessor-based controller 133 (e.g., CPU 701, HDC 702, DRAM 134,and read/write channels 137A, 137B) are implemented as a one-chipintegrated circuit (i.e., as an SoC). Alternatively, one or more of CPU701, HDC 702, DRAM 134, and read/write channels 137A and 137B can eachbe implemented as a separate chip.

Motor-driver chip 125 drives the spindle motor 114, a first actuator(that includes VCM 128A, actuator arms 124A-124C, and bearing assembly126), and a second actuator (that includes VCM 128B, actuator arms124D-124F, and bearing assembly 126). A first VCM driver circuit 713 ofmotor-driver chip 125 generates an amplified control signal 743A inresponse to control signals 743 from first servo controller 715, and asecond VCM driver circuit 713 of motor-driver chip 125 generates anamplified control signal 744A in response to control signals 744 fromsecond servo controller 716. Control signals 743 enable execution ofdisk access commands received from host 10 that are to be executed by afirst servo system of HDD 100 that includes VCM 128A and control signals744 enable execution of disk access commands received from host 10 thatare to be executed by a second servo system of HDD 100 that includes VCM128B. MA driver circuits 717 (in some embodiments included inmotor-driver chip 125) generate amplified second-stage control signals742A and 745A in response to control signals 742 and 745 (which arecontrol values for microactuators 228 and/or microactuators 229),respectively. Control signals 742 and 745 are generated by first servocontroller 715 and second servo controller 716, respectively. Thus, afirst MA driver circuit 717 generates amplified second-stage controlsignal 742A for microactuators 228 and/or 229 associated with actuatorarm assembly 120A, and a second MA driver circuit 717 generatesamplified second-stage control signal 745A for microactuators 228 and/or229 associated with actuator arm assembly 120B.

SPM control circuit 714 generates a drive signal 741 (a drive voltage ora drive current) in response to a control signal 751 received from theCPU 701 and feedback from the spindle motor 114, and supplies drivesignal 741 to spindle motor 114. In this way, spindle motor 114 rotatesstorage disks 110A-110D.

First servo controller 715 generates a VCM control signal 743 (drivevoltage or drive current) and a microactuator control signal 742 (drivevoltage or drive current). First servo controller 715 supplies VCMcontrol signal 743 to the first actuator (VCM 128A) via a VCM drivercircuit 713 and microactuator control signal 742 to a suitablemicroactuator 228 or 229 via one of MA driver circuits 317. In this way,first servo controller 715 positions read/write heads 127A-127D radiallyrelative to a corresponding one of recording surfaces 112A-112D. In someembodiments, first servo controller 715 includes a fine servo controller771 that generates microactuator control signal 742, a coarse servocontroller 772 that generates VCM control signal 743, and a victimfeedforward signal generator 773 that generates a feedforward signal(not shown in FIG. 7 ) for modifying microactuator control signal 742when VCM 128A is the victim actuator.

The functionality of victim feedforward signal generator 773 can beimplemented in whole or in part as software- or firmware-implementedlogic, and/or as hardware-implemented logic circuits. Further, in someembodiments, the functionality of victim feedforward signal generator773 is distributed across multiple software- firmware- and/orhardware-entities. For example, in one such embodiment, a first portionof the functionality of victim feedforward signal generator 773 isimplemented as one or more logic circuits, such as a multiply-accumulateengine, and a second portion of the functionality of victim feedforwardsignal generator 773 is implemented as software executed by, forexample, CPU 701. In such an embodiment, the multiply-accumulate engineexecutes most of the operations associated with performing a convolutionof previously asserted VCM commands to pre-compute a partial victimfeedforward value, while the software executed by the CPU uses thepre-computed partial victim feedforward value and more recently assertedVCM commands (such as VCM commands stored in recent aggressor VCMcommand buffer 777) to compute a victim feedforward value for modifyingmicroactuator control signal 742 when VCM 128A is the victim actuator.Operations performed by victim feedforward signal generator 773 togenerate a victim feedforward value are described in greater detailbelow in conjunction with FIGS. 11-13 .

According to various embodiments, first servo controller 715 furtherincludes an aggressor VCM command buffer 774, a victim feedforward valuebuffer 775, and a recent aggressor VCM command buffer 777. As set forthbelow, aggressor VCM command buffer 774, victim feedforward value buffer775, and recent aggressor VCM command buffer 777 facilitate thecalculation and assertion of a victim feedforward signal by victimfeedforward signal generator 773. In some embodiments, aggressor VCMcommand buffer 774, victim feedforward value buffer 775, and/or recentaggressor VCM command buffer 777 are implemented as a first-in-first-out(FIFO) memory device, a circular buffer, or any other suitable memorydevice that can be accessed with sufficient speed to enable embodimentsdescribed herein. Further, in some embodiments, recent aggressor VCMcommand buffer 777 can be a specified portion of aggressor VCM commandbuffer 774.

Aggressor VCM command buffer 774 is configured for storing recentlyasserted VCM commands issued to the aggressor actuator. Aggressor VCMcommand buffer 774 is configured to store a sufficient number ofpreviously issued VCM commands to include aggressor VCM commands thatcan still have a significant effect on the current position of thevictim head. For example, when the victim head has passed over a servowedge N, an aggressor VCM command asserted for the aggressor actuator atservo wedge N−500 is unlikely to still have a significant effect on theposition of the victim head, and can generally be ignored whencalculating a feedforward signal to compensate for recent motion of theaggressor actuator. By contrast, an aggressor VCM command asserted forthe aggressor actuator at servo wedge N−3 is likely to have a largeeffect on the position of the victim head, since the mechanicaldisturbance of such recent motion by the aggressor actuator is stillpropagating throughout HDD 100. Thus, aggressor VCM command buffer 774can be configured to store a relatively large number of aggressor VCMcommands. In some embodiments, aggressor VCM command buffer 774 isconfigured to store a number of aggressor VCM commands that is fewerthan the number of servo wedges associated with a complete rotation of astorage disk 110. For example, in some embodiments, aggressor VCMcommand buffer 774 is configured to store on the order of about 100 to200 VCM commands issued most recently to the aggressor actuator.Alternatively, in some embodiments, aggressor VCM command buffer 774 isconfigured to store a number of aggressor VCM commands that isapproximately equal to the number of servo wedges associated with acomplete rotation of a storage disk 110.

One embodiment of aggressor VCM command buffer 774 is described below inconjunction with FIG. 8A and one embodiment of recent aggressor VCMcommand buffer 777 is described below in conjunction with FIG. 8B.

FIG. 8A schematically illustrates an aggressor VCM command buffer 774,according to an embodiment. As shown, aggressor VCM command buffer 774includes a plurality of VCM command entries 801 that are each associatedwith a corresponding servo wedge number 802. The servo wedge number 802for a particular VCM command entry 801 indicates the servo wedge numbermost recently passed over by the aggressor head when the particular VCMcommand entry 801 is determined for the aggressor VCM. For example, whenthe aggressor head passes over a servo wedge N and a next VCM command iscalculated for the aggressor actuator in response, the aggressor VCMcommand is calculated, asserted by the aggressor VCM (for example by theaggressor actuator), and stored in aggressor VCM command buffer 774 asone of VCM command entries 801. In addition, a unique value indicatingservo wedge N, such as a wedge index value, is stored as thecorresponding servo wedge number 802 for that VCM command entry 801.

In the embodiment illustrated in FIG. 8A, servo wedge numbers 802 arestored in aggressor VCM command buffer 774. In other embodiments, theassociation between VCM command entries 801 and servo wedge numbers 802can be tracked using any other technically feasible approach. Forinstance, in some embodiments, aggressor VCM command buffer 774 does notstore servo wedge numbers 802. In such embodiments, when command entries801 are employed to determine a victim feedforward value, selection ofeach command entry 801 can be controlled, for example via a pointer, sothat each command entry 801 is associated with the correct servo wedgeduring the victim feedforward calculation without explicitly retrievinga servo wedge number 802 from aggressor VCM command buffer 774.

In the embodiment illustrated in FIG. 8A, VCM command entries 801 aredepicted as integer values, such as values sent to a digital-to-analogconverter that is an input to a VCM driver 713. In some embodiments,such integer values may be appropriately re-scaled prior to being sentto the VCM driver 713. Alternatively, in some embodiments, each VCMcommand entry 801 includes a number representing a target current (e.g.,in milliamperes), a target aggressor head acceleration (e.g., inm/sec²), or the like.

The location of aggressor VCM command buffer 774 is depicted in FIG. 7to be included in or otherwise associated with the servo controller ofthe aggressor actuator. That is, when VCM 128A is the aggressoractuator, aggressor VCM command buffer 774 of first servo controller 715stores VCM commands for VCM 128A because first servo controller 715controls the aggressor actuator (VCM 128A). In alternative embodiments,a VCM command buffer is instead included in or otherwise associated withthe servo controller of the victim actuator. For example, in suchembodiments, when VCM 128A is the aggressor actuator and VCM 128B is thevictim actuator, an aggressor VCM command buffer 784 of second servocontroller 716 stores the VCM commands for VCM 128A, because secondservo controller 716 controls the victim actuator (VCM 128B).

Recent aggressor VCM command buffer 777 facilitates generation of avictim feedforward value for modifying microactuator control signal 742when VCM 128A is the victim actuator. Specifically, in some embodiments,recent aggressor VCM command buffer 777 stores the aggressor VCMcommands that have been most recently asserted by the aggressor VCM (VCM128B). Some or all of the aggressor VCM commands stored by recentaggressor VCM command buffer 777 are employed in performing aconvolution of previously asserted VCM commands to pre-compute a partialvictim feedforward value. In such embodiments, a multiply-accumulateengine (or another logical circuit) associated with or included invictim feedforward signal generator 773 pre-computes a partial victimfeedforward value by executing most of the operations associated withperforming the convolution of previously asserted aggressor VCM commandsthat are likely to affect the position of the victim head, for example100 or 200 recent aggressor VCM commands stored in aggressor VCM commandbuffer 774. Then, software executed by a CPU or other processor, or byanother short run of the multiply-accumulate engine (or other logicalcircuit), uses the pre-computed partial victim feedforward value andone, some, or all of the aggressor VCM commands stored in recentaggressor VCM command buffer 777 to complete computation of a victimfeedforward value for modifying microactuator control signal 742 whenVCM 128A is the victim actuator.

FIG. 8B schematically illustrates an aggressor VCM command buffer 774,according to another embodiment. Similar to the embodiment illustratedin FIG. 8A, aggressor VCM command buffer 774 includes a plurality of VCMcommand entries 801. Unlike the afore-mentioned embodiment, in theembodiment illustrated in FIG. 8B, aggressor VCM command buffer 774includes two VCM commands per servo wedge. Thus, in the embodiment,aggressor VCM command buffer 774 is configured for a multi-rate controlsystem for the aggressor actuator, in which the control signals for theaggressor actuator and the victim actuator are updated at a higher ratethan the rate at which the positions of the aggressor head and thevictim head are determined. For example, in an embodiment, the controlsignal for an aggressor actuator (and the victim actuator) is updated attwice the rate at which the read/write head position for the aggressorhead and the victim head actuator is measured. Thus, in such anembodiment, two aggressor VCM commands may be associated with eachservo-wedge, where these two VCM commands are the VCM commands employedby the servo system for the aggressor actuator to control the aggressoractuator for the corresponding servo wedge. A scheme for implementingembodiments in a multi-rate control system is described below inconjunction with FIGS. 12 and 13 .

FIG. 8C schematically illustrates recent aggressor VCM command buffer777, according to an embodiment. As shown, recent aggressor VCM commandbuffer 777 includes one or more VCM command entries 851 and one or morecorresponding servo wedge numbers 852. Thus, for each VCM command entry851, there is a corresponding servo wedge number 852. Similar to servowedge numbers 802 of aggressor VCM command buffer 774, the servo wedgenumber 852 for a particular VCM command entry 851 indicates the servowedge number most recently passed over by the aggressor head when theparticular VCM command entry 851 is determined for the aggressor VCM.Thus, when the aggressor head passes over a servo wedge N and a next VCMcommand is calculated for the aggressor actuator in response, theaggressor VCM command is calculated, asserted (for example by theaggressor actuator), and stored in recent aggressor VCM command buffer777 as one of VCM command entries 851. In addition, a unique valueindicating servo wedge N, such as a wedge index value, is stored as thecorresponding servo wedge number 852 for that VCM command entry 851. Inthe embodiment illustrated in FIG. 8C, VCM command entries 851 aredepicted as integer values, such as values sent to a digital-to-analogconverter that is an input to a VCM driver 713. Alternatively, in someembodiments, each VCM command entry 851 includes a number representing atarget current (e.g., in milliamperes), a target aggressor headacceleration (e.g., in m/sec²), or the like.

According to some embodiments, recent aggressor VCM command buffer 777is configured to store a small number of VCM command entries 851, suchas one, two, or three of the most recently asserted aggressor VCMcommands. According to some embodiments, recent aggressor VCM commandbuffer 777 is configured to store only VCM command entries for themost-recent aggressor wedge.

In the embodiment illustrated in FIG. 8C, a single VCM command entry 851is associated with each servo wedge number 852 in recent aggressor VCMcommand buffer 777. Similar to aggressor VCM command buffer 774, inembodiments in which HDD 100 includes a multi-rate control system forcontrolling the aggressor actuator and the victim actuator, recentaggressor VCM command buffer 777 may include multiple (e.g., two) VCMcommand entries 851 for each servo wedge number 852 in recent aggressorVCM command buffer 777.

Returning to FIG. 7 , victim feedforward value buffer 775 is configuredfor storing one or more values of the victim feedforward signal to beadded to microactuator control signal 742 when VCM 128A is the victimactuator. One embodiment of victim feedforward value buffer 775 isdescribed below in conjunction with FIG. 9 .

FIG. 9 schematically illustrates a victim feedforward value buffer 775,according to an embodiment. As shown, victim feedforward value buffer775 includes one or more victim feedforward entries 901 and, for eachvictim feedforward entry 901, a corresponding servo wedge number 902.Thus, for each victim feedforward value stored in victim feedforwardvalue buffer 775, there is a corresponding servo wedge number 902. Thatis, each value of the victim feedforward signal stored in victimfeedforward value buffer 775 is associated with a particular servo wedgeof a recording surface. According to various embodiments, a time atwhich a particular victim feedforward entry 901 is employed tocompensate for an aggressor actuator command can be determined basedon 1) the servo wedge number 902 corresponding to that particular victimfeedforward entry 901 and 2) a preset wedge offset value (describedbelow). In some embodiments, each servo wedge number 902 in victimfeedforward value buffer 775 indicates a respective servo wedge of arecording surface associated with the aggressor actuator, and in otherembodiments, with a respective servo wedge of a recording surfaceassociated with the victim actuator.

In the embodiment illustrated in FIG. 9 , victim feedforward entries 901are depicted as integer values that are re-scaled prior to being sent tothe MA Driver Circuit 717 to indicate a target displacement of themicroactuator (for example, in units of 256 counts per servo-track).Alternatively, in some embodiments, each victim feedforward entry 901includes a value indicating a target voltage applied to a microactuator(e.g., microactuator 228).

In embodiments in which each servo wedge number 902 indicates arespective servo wedge of a recording surface associated with theaggressor actuator, the servo wedge number 902 indicates the servo wedgemost recently passed over by the aggressor head when that particularvictim feedforward value was determined. For example, when the aggressorhead passes over a servo wedge N and a victim feedforward entry 901 iscalculated, that victim feedforward entry 901 is stored in victimfeedforward value buffer 775 and the corresponding servo wedge number902 for that victim feedforward value 901 is a unique wedge index valueindicating servo wedge N.

According to such embodiments, a particular victim feedforward entry 901is asserted at a servo wedge that does not circumferentially correspondto the servo wedge indicated by the servo wedge number 902 for thatparticular victim feedforward entry 901. Instead, in such embodiments, aparticular victim feedforward entry 901 is asserted at a servo wedgethat is circumferentially offset by a preset wedge offset value from theservo wedge indicated by the servo wedge number 902. For example, whenthe aggressor head passes over a servo wedge N, an aggressor VCM commandis calculated in next aggressor VCM command calculation 413 for servowedge N. Then, in a feedforward value calculation and storing operation,a victim feedforward value is calculated and is stored in victimfeedforward value buffer 775 as a victim feedforward entry 901, alongwith an associated servo wedge number 902 (such as a unique wedge indexvalue indicating servo wedge N). In the example, that victim feedforwardentry 901 is asserted in response to the victim head passing over aservo wedge on the recording surface associated with the victim actuatorthat is circumferentially offset from servo wedge N by the preset wedgeoffset value. Thus, that victim feedforward entry 901 is not asserted inresponse to the victim head passing over servo wedge N on the recordingsurface associated with the victim actuator, and instead is asserted ata later servo wedge. For example, when the wedge offset value is set to1, that victim feedforward entry 901 is asserted in response to thevictim head passing over servo wedge N+1 on the recording surfaceassociated with the victim actuator. Similarly, when the wedge offsetvalue is set to 2, that victim feedforward entry 901 is asserted inresponse to the victim head passing over servo wedge N+2 on therecording surface associated with the victim actuator. Generally, thepreset wedge offset value for an HDD is an integral value from one tothe number of wedges in a revolution of the disk.

In this way, a victim feedforward value that is calculated and stored infeedforward value calculation and storing operation 527 for servo wedgeN is asserted in victim actuator command assertion 526 for a subsequentservo wedge, such as servo wedge N+1 or N+2. Thus, a victim feedforwardvalue is generated based on position information collected when theaggressor head passes over a first servo wedge of the recording surfaceassociated with the aggressor head, and the victim feedforward value isasserted in response to the victim head passing over a second servowedge of the recording surface associated with the victim head, wherethe second servo wedge does not circumferentially correspond to thefirst servo wedge.

In alternative embodiments, each servo wedge number 902 stored in victimfeedforward value buffer 775 indicates a respective servo wedge of arecording surface associated with the victim actuator. In one suchembodiment, the servo wedge number 902 for a particular victimfeedforward entry 901 indicates the servo wedge to be passed over by thevictim head prior to that particular victim feedforward value beingasserted. In such an embodiment, the servo wedge to be passed over bythe victim head is circumferentially offset by a preset wedge offsetvalue from an aggressor servo wedge, which is a servo wedge of therecording surface associated with the aggressor head. Specifically, inthis embodiment, the aggressor servo wedge is the servo wedge from whichthe most recent position information was collected for the aggressorhead on which an aggressor VCM control signal is based that is includedin the VCM control signals used to generate the particular victimfeedforward entry 901. Thus, in such an embodiment, the aggressor servowedge is the last servo wedge of the recording surface from whichaggressor head position information has been collected that is includedin the calculation of the particular victim feedforward entry 901.

For example, in one such embodiment, when the victim head passes over aservo wedge N, a particular victim feedforward entry 901 is employedduring the next calculation of the victim microactuator command forservo wedge N. That particular victim feedforward value is calculatedbased on a plurality of aggressor VCM commands asserted prior to thevictim head passing over servo wedge N (for example when the aggressorhead passes over servo wedge N−1, N−2, etc.). That is, the particularvictim feedforward entry 901 is calculated based on a plurality ofaggressor VCM commands, the most recent of which is generated inresponse to the aggressor head passing over a servo wedge that is 1)circumferentially offset by a wedge offset value from servo wedge N and2) is passed over by the aggressor head prior to the victim head passingover servo wedge N. Thus, when the wedge offset value is set to one, theparticular victim feedforward entry 901 stored in victim feedforwardvalue buffer 775 that is associated with servo wedge N is generatedbased on position information that has been collected when the aggressorhead passes over servo wedge N−1 and over previous servo wedges, but noton position information that has been collected when the aggressorpasses over servo wedge N. Similarly, when the wedge offset value is setto two, that particular victim feedforward entry 901 stored in victimfeedforward value buffer 775 is generated based on position informationthat has been collected when the aggressor head passes over servo wedgeN−2 and a plurality of servo wedges preceding servo wedge N−2, but noton position information that has been collected when the aggressorpasses over servo wedges N or N−1.

In the embodiment, the servo wedge indicated by the servo wedge number902 for a particular victim feedforward entry 901 is a unique indexvalue. The unique index value indicates a servo wedge passed over by thevictim head (e.g., servo wedge N) that is offset by the wedge offsetvalue (e.g., 2) from the servo wedge passed over by the aggressor headand associated with the determination of that particular victimfeedforward entry 901 (e.g., servo wedge N−2). That is, in such anembodiment, the unique index value indicates the servo wedge to bepassed over by the victim head immediately prior to that particularvictim feedforward value being asserted. Therefore, as with thepreviously described embodiment for servo wedge number 902, a victimfeedforward value is generated based on position information collectedwhen the aggressor head passes over a first servo wedge of the recordingsurface associated with the aggressor head, and the victim feedforwardvalue is asserted in response to the victim head passing over a secondservo wedge of the recording surface associated with the victim head,where the second servo wedge does not circumferentially correspond tothe first servo wedge and is circumferentially offset from the firstservo by the wedge offset value.

In the embodiment illustrated in FIG. 9 , victim feedforward valuebuffer 775 includes 11 or more victim feedforward entries 901 andcorresponding servo wedge numbers 902. In other embodiments, victimfeedforward value buffer 775 includes a number of victim feedforwardentries 901 and servo wedge numbers 902 equal to or greater than thenumber of wedges associated with one revolution of a storage disk.

Returning to FIG. 7 , second servo controller 716 is similar inconfiguration and operation to first servo controller 715. Second servocontroller 716 generates a VCM control signal 744 (drive voltage ordrive current) and a microactuator control signal 745 (drive voltage ordrive current), and supplies VCM control signal 744 to the secondactuator (VCM 128B) via a VCM driver circuit 713 and microactuatorcontrol signal 745 to a suitable microactuator 228 or 229 via MA drivercircuit 317. In this way, second servo controller 716 positionsread/write heads 127E-127H radially with respect to a corresponding oneof recording surface 112E-127H. In some embodiments, second servocontroller 716 includes a fine servo controller 781 that generatesmicroactuator control signal 745, a coarse servo controller 782 thatgenerates VCM control signal 744 and a victim feedforward signalgenerator 783 that generates a feedforward signal (not shown in FIG. 7 )for modifying microactuator control signal 745.

Similar to victim feedforward signal generator 773, the functionality ofvictim feedforward signal generator 783 can be implemented in whole orin part as software- or firmware-implemented logic, and/or ashardware-implemented logic circuits. Further, in some embodiments, thefunctionality of victim feedforward signal generator 783 is distributedacross multiple software- firmware- and/or hardware-entities. Operationsperformed by victim feedforward signal generator 783 to generate avictim feedforward value are described in greater detail below inconjunction with FIGS. 12A, 12B, and 13 .

According to various embodiments, second servo controller 716 furtherincludes an aggressor VCM command buffer 784, a victim feedforward valuebuffer 785, and a recent aggressor VCM command buffer 787. Aggressor VCMcommand buffer 784, victim feedforward value buffer 785, and recentaggressor VCM command buffer 787 facilitate the calculation andassertion of a victim feedforward signal by victim feedforward signalgenerator 783 in the same way (described above) that aggressor VCMcommand buffer 774, victim feedforward value buffer 775, and recentaggressor VCM command buffer 777 facilitate the calculation andassertion of a victim feedforward signal by victim feedforward signalgenerator 773. In some embodiments, aggressor VCM command buffer 784,victim feedforward value buffer 785, and/or recent aggressor VCM commandbuffer 787 are implemented as a FIFO memory device, a circular buffer,or any other suitable memory device that can be accessed with sufficientspeed to enable embodiments described herein.

In the embodiment described above, first servo controller 715 and secondservo controller 716 each generate a feedforward signal for modifying amicroactuator signal. In alternative embodiments, CPU 701 generates afeedforward signal for modifying microactuator signal 742 and anotherfeedforward signal for modifying microactuator signal 745. Thus, in someembodiments, first servo controller 715 and second servo controller 716are implemented in whole or in part in firmware running on CPU 701. Inembodiments in which microprocessor-based controller 133 includesmultiple CPUs, such firmware can run on one or more of the multipleCPUs.

In the embodiment described above, aggressor VCM command buffer 774,victim feedforward value buffer 775, and/or recent aggressor VCM commandbuffer 777 are included in or otherwise associated with first servocontroller 715 and aggressor VCM command buffer 784, victim feedforwardvalue buffer 785, and/or recent aggressor VCM command buffer 787 areincluded in or otherwise associated with second servo controller 716. Inother embodiments, the functionality of aggressor VCM command buffer774, victim feedforward value buffer 775, recent aggressor VCM commandbuffer 777, aggressor VCM command buffer 784, victim feedforward valuebuffer 785 and/or recent aggressor VCM command buffer 777 is included inRAM 134.

Fractional-Wedge Timing Compensation of Aggressor and Victim Actuators

FIG. 10A is a control diagram 1000 illustrating the generation andapplication of a victim feedforward control signal in HDD 100, accordingto various embodiments. As shown, HDD 100 includes a first control loop1020 associated with an aggressor actuator (in this example VCM 128A)and a second control loop 1030 associated with a victim actuator (inthis example VCM 128B). In conjunction, first control loop 1020 andsecond control loop 1030 enable fractional-wedge timing compensation inthe application of the victim feedforward control signal.

First control loop 1020 includes VCM 128A, a microactuator 1028A for thecurrently active read/write head associated with VCM 128A, aggressor VCMcommand buffer 774, and first servo controller 715. In some embodiments,first control loop 1020 further includes a notch filter 1011 formodifying microactuator control signals 1042 for microactuator 1028Aand/or a notch filter 1012 for modifying VCM control signals 1047 forVCM 128A to a filtered VCM control signal 743. In some embodiments,first control loop 1020 also includes an injection point 1029. Injectionpoint 1029 is a point in first control loop 1020 at which a disturbancecan be injected into control signals that are applied to VCM 128A (e.g.,VCM control signal 743) as part of measuring a transfer function isdescribed below in conjunction with FIG. 16 .

Second control loop 1030 includes VCM 128B, a microactuator 1028B forthe currently active head associated with VCM 128B, second servocontroller 716, and victim feedforward signal generator 783. In someembodiments, second control loop 1030 further includes recent aggressorVCM command buffer 787, and in some embodiments second control loop 1030further includes victim feedforward value buffer 785. Additionally oralternatively, in some embodiments, second control loop 1030 furtherincludes a notch filter 1021 for modifying microactuator control signals1045 for microactuator 1028B and/or a notch filter 1022 for modifyingVCM control signals 1044 for VCM 128B.

For clarity, VCM driver circuit 713 and MA driver circuit 717 are notshown in FIGS. 10A and 10B. Instead, the functionality of VCM drivercircuit 713 is included in VCM 128A and 128B, while the functionality ofMA driver circuit 717 is included in microactuator 1028A and 1028B.Further, in the embodiment illustrated in FIG. 10A, notch filters 1011and 1012 are depicted as external to first servo controller 715 andrecent aggressor VCM command buffer 787, victim feedforward signalgenerator 783, and notch filters 1021 and 1022 are depicted as externalto second servo controller 716. In other embodiments, notch filters 1011and/or 1012 may be implemented conceptually or physically as part offirst servo controller 715, and recent aggressor VCM command buffer 787,victim feedforward signal generator 783, and/or notch filters 1021 and1022 may be implemented conceptually or physically as part of secondservo controller 716.

During operation, first servo controller 715 generates VCM controlsignal 743 (or alternatively VCM control signal 1047, on which VCMcontrol signal 743 is based) for VCM 128A and microactuator controlsignal 742 (or alternatively microactuator control signal 1042, on whichmicroactuator control signal 742 is based) for microactuator 1028A.Alternatively, CPU 701 generates microactuator control signal 742 formicroactuator 1028A. Because of mechanical coupling 1001 between VCM128A and VCM 128B, operations performed by VCM 128A in response to VCMcontrol signal 743 cause a radial displacement of the currently activeread/write head associated with VCM 128B. This radial displacementcontributes to position error signal (PES) 1002 based on the radialposition 1005 of the currently active read/write head associated withVCM 128B.

According to various embodiments, victim feedforward signal generator783 generates a victim feedforward signal 1003, based on a transferfunction. In some embodiments, the transfer function models commandsadded to microactuator control signal 745 for microactuator 1028B (thevictim microactuator) as a function of VCM control signal 743 for VCM128A (the aggressor actuator). Example embodiments for the determinationof such a transfer function are described below in conjunction withFIGS. 15-17 . Victim feedforward signal generator 783 in second servocontroller 716 receives information about VCM control signal 1047 or VCMcontrol signal 743 from first servo controller 715 via a communicationlink between first servo controller 715 and second servo controller 716(shown in FIG. 7 ). The information about VCM control signal 1047 or VCMcontrol signal 743 is associated with a first servo wedge. In someembodiments, feedforward signal 1003 values (for example, victimfeedforward entries 901 and servo wedge numbers 902) are then stored invictim feedforward value buffer 785 and added to a subsequentmicroactuator control signal 1045 (or alternatively microactuatorcontrol signal 745, which is based on microactuator control signal 1045)associated with a second servo wedge that is passed over by the victimhead subsequent to the aggressor head passing over the first servowedge. In some embodiments, victim feedforward value buffer 785 may beincluded in, for example, victim feedforward signal generator 783 or insecond servo controller 716.

Feedforward signal 1003, when added to the appropriate microactuatorcontrol signal 1045 (or alternatively to microactuator control signal745, which is based on microactuator control signal 1045), reduces orcompensates for contributions to radial position 1005 caused when VCMcontrol signal 743 (which is based on VCM control signal 1047) isapplied to VCM 128A. Victim feedforward entries 901 are employed basedon the corresponding servo wedge number 901 in victim feedforward valuebuffer 785. As a result, the use of a particular victim feedforwardentry 901 is timed to be used for an appropriate servo wedge that iscrossed by the victim head (the second servo wedge) after the aggressorhead has passed over a servo wedge (the first servo wedge) that is usedto generate the particular victim feedforward entry 901.

Alternatively, in some embodiments, a suitable victim feedforward valueis generated by victim feedforward signal generator 783 immediatelybefore being added to the appropriate microactuator control signal 1045and storage of victim feedforward values for one or more servo wedges isnot needed. For example, in such embodiments, victim feedforward valuebuffer 785 is not employed. Instead, a victim feedforward value used tomodify microactuator control signal 1045 (or alternatively,microactuator control signal 745, which is based on microactuatorcontrol signal 1045) that is asserted by the victim actuator for servowedge N is calculated shortly before the victim actuator command isasserted for servo wedge N. In such embodiments, the victim feedforwardvalue is based on aggressor actuator commands that are associated withservo wedges prior to servo wedge N, the most recent of which precedesservo wedge N by the wedge offset value for HDD 100. In suchembodiments, one or more of the most recent aggressor actuator commandsthat are employed to generate the victim feedforward value may be storedin recent aggressor VCM command buffer 787.

In some embodiments, the transfer function for determining feedforwardsignal 1003, referred to herein as the feedforward transfer function, isdetermined as the ratio of two transfer functions that can be directlymeasured in the multi-actuator drive: a first transfer function modelingradial position 1005 as a function of filtered VCM control signal 743for VCM 128A and a second transfer function modeling radial position1005 as a function of commands 1003 that are added to microactuatorcontrol signal 1045 or microactuator control signal 745. In suchembodiments, the first and second transfer functions can be determinedin HDD 100 as part of a calibration/start-up process or during factorytuning of the drive. For example, in one such embodiment, valuesassociated with the first transfer function are determined by addingvarious values to filtered VCM control signal 743 and measuring theresultant radial position 1005 of the victim read/write head. Similarly,values associated with the second transfer function are determined byadding various values of feedforward signal 1003 to microactuatorcontrol signal 745 and measuring the resultant radial position 1005 ofthe victim read/write head. In some embodiments, the second transferfunction is determined by adding various values of feedforward signalsdirectly to microactuator control signal 745. In alternativeembodiments, the second transfer function is determined by addingvarious values of feedforward signals to the input of notch filter 1021,the output of which is microactuator control signal 745. The latterembodiment is shown in FIG. 10A. The second transfer function isdetermined using the same injection point that will be used to injectfeedforward during operation of the HDD 100. Example embodiments for thedetermination of the feedforward transfer function are described belowin conjunction with FIG. 16 , example embodiments for the determinationof the first transfer function are described below in conjunction withFIG. 17 , and example embodiments for the determination of the secondtransfer function are described below in conjunction with FIG. 18 .

In some embodiments, victim feedforward signal 1003 is generated using akernel that is derived based on the feedforward transfer function. Insuch embodiments, values associated with the feedforward transferfunction are determined by taking a ratio of the above-described firstand second transfer functions (e.g., the first transfer function dividedby the second transfer function), where the kernel is the inversediscrete Fourier transform (DFT) of the values associated with thefeedforward transfer function. Subsequently, victim feedforward signalgenerator 783 can convolve values for filtered VCM control signal 743with the kernel to generate feedforward signal 1003.

In the embodiment illustrated in FIG. 10A, VCM 128A is described as theaggressor actuator and VCM 128B is described as the victim actuator. Inother instances, VCM 128B can operate as the aggressor actuator and VCM128A can operate as the victim actuator. In such instances, victimfeedforward signal generator 773 (shown in FIG. 7 ) generates afeedforward signal similar to feedforward signal 1003 and provides thatfeedforward signal to microactuator 1028A as a correction signal. Innormal practice, VCM 128A and VCM 128B act as both the aggressoractuator and the victim actuator simultaneously.

In the embodiment illustrated in FIG. 10A, victim feedforward signalgenerator 783 is implemented as an element of HDD 100 that is separatefrom first servo controller 715 and second servo controller 716.Alternatively, victim feedforward signal generator 783 is implemented asa component of first servo controller 715, a component of second servocontroller 716, or a component of both first servo controller 715 andsecond servo controller 716. Similarly, in instances in which VCM 128Bis the aggressor actuator and VCM 128A is the victim actuator, victimfeedforward signal generator 773 can be implemented as an element of HDD100 that is separate from first servo controller 715 and second servocontroller 716, as a component of first servo controller 715, acomponent of second servo controller 716, or a component of both firstservo controller 715 and second servo controller 716.

In embodiments in which multiple read/write heads are coupled to avictim actuator, such as VCM 128A or VCM 128B, the above-describedfeedforward transfer function for determining feedforward signal 1003typically varies for each such read/write head. That is, mechanicalcoupling 1001 between an aggressor actuator and a victim actuator canresult in a different contribution to radial position 1005 of a victimhead, depending on the victim head. For example, referencing theembodiment illustrated in FIG. 2 , actuation of actuator arm assembly120A can affect radial position 1005 for each of read/write heads 227E,227F, 227G, and 227H differently. In such embodiments, a differentfeedforward transfer function for determining feedforward signal 1003 isdetermined for each read/write head 127 included in HDD 100. A processfor determining different feedforward transfer functions for eachread/write head 127 of HDD 100 is described below in conjunction withFIG. 16-18 .

In some embodiments, first control loop 1020 includes notch filter 1011and/or notch filter 1012 and second control loop 1030 includes notchfilter 1021 and/or notch filter 1022. In such embodiments, notch filters1012 and 1022 may be band-stop filters configured to block or attenuateportions of input signals that are likely to excite one or moreresonances in or associated with VCM 128A and 128B, respectively. Forfirst control loop 1020, properly-designed notch filters 1011 and 1012,in combination with other elements in first servo controller 715 and themechanical system including microactuator 1028A and VCM 128A, can resultin a stable servo control-loop. Without the notch filters, first controlloop 1020 might be unstable, or only marginally stable. Similarly, forsecond control loop 1030, properly-designed notch filters 1021 and 1022facilitate a stable servo control-loop. For example, one or more bandsof an input signal, such as VCM control signal 742 or 744, are reducedin amplitude when processed by notch filter 1012 or 1022. Notch filters1011 and 1021 are configured to remove or reduce portions of inputsignals that are likely to excite one or more resonances in orassociated with microactuators 1028A and 1028B, respectively.

In the embodiment described above, notch filters 1011, 1012, 1021, and1022 are employed to eliminate or greatly attenuate certain frequencycomponents. Alternatively or additionally, in some embodiments, one ormore of notch filters 1011, 1012, 1021, and 1022 are configured tomodify the phase of a signal and/or to increase the gain of a signal atcertain frequencies. Such filters are sometimes called “phase steering”or “loop-shaping” filters, and can be used to stabilize a system usingcalculations that are similar or identical to calculations included innotch filters that are designed to eliminate or greatly attenuatecertain frequency components. Alternatively, in some embodiments, one ormore of notch filters 1011, 1012, 1021, and 1022 are omitted from firstcontrol loop 1020 and/or second control loop 1030, and/or are includedin victim feedforward signal generator 783.

FIG. 10B is a control diagram 1050 illustrating the generation andapplication of a victim feedforward control signal in HDD 100, accordingto various embodiments. Control diagram 1050 is substantially similar tocontrol diagram 1000 in FIG. 10A, with two exceptions. First, controldiagram 1050 includes a notch filter 1051 that is configured to processthe output of victim feedforward signal generator 783 and victimfeedforward value buffer 785, i.e., victim feedforward signal 1003. Forclarity, victim feedforward value buffer 785 is omitted from FIG. 10B,but can be located between victim feedforward signal generator 783 andnotch filter 1051. Second, victim feedforward signal 1003, after beingmodified by notch filter 1051, is added to microactuator control signal745 in a different location, i.e., a summer 1052 disposed between notchfilter 1021 and microactuator 1028A.

Victim Feedforward Signal Generation

As described above, victim feedforward signal generator 773 and victimfeedforward signal generator 783 are each configured to generate avictim feedforward signal (for example victim feedforward signal 1003)for the current victim head in HDD 100. In some embodiments, such avictim feedforward signal is based on not only a transfer functionspecific to the current victim head, but also on a timing offset betweenthe victim head and the aggressor head. One such embodiment is describedbelow in conjunction with FIG. 11 .

FIG. 11 is a more detailed block diagram of a victim feedforward signalgenerator 1100, according to various embodiments. For example, victimfeedforward signal generator 1100 can be implemented as victimfeedforward signal generator 773 and as victim feedforward signalgenerator 783 in HDD 100. In the embodiment illustrated in FIG. 11 ,victim feedforward signal generator 1100 includes a VCM commandinterpolator 1101, a victim feedforward kernel 1102, and a victimfeedforward signal interpolator 1103. In some alternative embodiments,victim feedforward signal generator 1100 does not include VCM commandinterpolator 1101, and in some alternative embodiments victimfeedforward signal generator 1100 does not include victim feedforwardsignal interpolator 1103.

Victim feedforward kernel 1102 is a kernel for a specific victim headand is derived based on the feedforward transfer function for thatspecific victim head. Generally, victim feedforward kernel 1102 isconfigured to generate a victim feedforward signal or signals (e.g.,victim feedforward signal 1003 in FIG. 10A) based on aggressor VCMcommands/control signals and on a set of values derived from theappropriate feedforward transfer function for the victim head. Forexample, in some embodiments, victim feedforward kernel 1102 generates avictim feedforward signal or signals based on VCM command entries 801 ofFIG. 8A or 8B. Generation of a set of values for victim feedforwardkernel 1102 for a specific victim head is described below in conjunctionwith FIG. 16 .

VCM command interpolator 1101 is configured to modify VCM command valuesprior to use by victim feedforward kernel 1102 based on the timingoffset between the victim head and the aggressor head. As describedabove, the timing offset between the victim head and the aggressor headcan change over the lifetime of HDD 100, and/or the aggressor head canhave a different timing offset with the victim head than the baseaggressor head that was used when determining victim feedforward kernel1102. In either case, the modified VCM command values generated by VCMcommand interpolator 1101 are selected to compensate for such timingoffsets between the victim head and the aggressor head. For example, insome embodiments, VCM command interpolator 1101 generates a modified VCMcommand value for use by victim feedforward kernel 1102 by interpolatingbetween two calculated VCM command values. Such embodiments aredescribed below in conjunction with FIGS. 12A and 12B.

FIG. 12A is a plot of VCM command values 1200 determined for a portionof an aggressor seek performed by an aggressor head when there is notiming offset between the aggressor head and the victim head, accordingto various embodiments. Each of VCM command values 1200 is associatedwith a different corresponding servo wedge number (e.g., N−4, N−3, N−2,N−2, N−1, or N). For example, VCM command values 1200 can correspond toVCM command entries 801 of FIG. 8A, and servo wedge numbers N−4 throughN correspond to servo wedge numbers 802 of FIG. 8A. Thus, when theaggressor head crosses servo wedge N−4, a VCM command value 1214 iscalculated, asserted by the aggressor actuator (for example by theaggressor VCM), and stored (for example in aggressor VCM command buffer774 in FIG. 8A) as one of VCM command entries 801. Similarly, when theaggressor head crosses servo wedge N−3, a VCM command value 1213 iscalculated, asserted, and stored; when the aggressor head crosses servowedge N−2, a VCM command value 1212 is calculated, asserted, and stored;when the aggressor head crosses servo wedge N−1, a VCM command value1211 is calculated, asserted, and stored; and when the aggressor headcrosses servo wedge N, a VCM command value 1210 is calculated, asserted,and stored.

In some instances, the transfer function for determining the valuesincluded in victim feedforward kernel 1102 for the victim headaccurately takes into account the timing relationship (e.g., the timingoffset) between the victim head and the aggressor head. As a result, insuch instances, VCM command interpolator 1101 does not modify VCMcommand values 1200. For example, in some instances, neither the victimhead nor the aggressor head have undergone a significant timing shiftsince measurements for determining the transfer function were performed.In such instances, when the aggressor head is the base aggressor headused when determining victim feedforward kernel 1102 for the currentvictim head, VCM command interpolator 1101 does not modify VCM commandvalues 1200, even when a significant timing offset is present betweenthe victim head and the aggressor head (such as a timing offset 600 ofFIG. 6 ). This is because the victim head can be assumed to cross servowedge N on the victim head recording surface with an initial timingoffset from when the aggressor head crosses servo wedge N on theaggressor head recording surface. Because the effects of the initialtiming offset between a particular victim head and the base aggressorhead are accounted for in victim feedforward kernel 1102 for theparticular victim head, in such an instance, VCM command interpolator1101 does not modify VCM command values 1200.

By contrast, in many instances there is a timing relationship differencebetween the victim head and the aggressor head performing the aggressorseek associated with VCM command values 1200. In some embodiments, insuch instances VCM command values 1200 are modified by VCM commandinterpolator 1101 to compensate for such a timing relationshipdifference. One such embodiment is described below in conjunction withFIG. 12B.

FIG. 12B is a plot of VCM command values 1200 that are initiallycalculated for an aggressor seek and interpolated VCM command values1250-1254 (referred to collectively as interpolated VCM command values1240) that are actually used to determine a victim feedforward signal,according to various embodiments. Specifically, interpolated VCM commandvalues 1240 for the aggressor seek are employed to compensate forcertain timing relationship differences between the victim head and theaggressor head. One example of such a timing relationship difference isa timing shift that is experienced by the aggressor head, for exampledue to a circumferential displacement or other circumferentialmisalignment of the aggressor head. Such a timing shift alters thetiming offset between the victim head and the aggressor head from aninitial timing offset (such as an initial timing offset 600 in FIG. 6 ).Another example of such a timing relationship difference is a timingoffset between the aggressor head and the base aggressor head that wasused when determining victim feedforward kernel 1102, because victimfeedforward kernel 1102 is configured based on the assumption that theaggressor head has identical timing to that of the base aggressor head.

In the embodiment illustrated in FIG. 12B, there is a timingrelationship difference between the victim head and the aggressor headthat is not accounted for by the victim feedforward kernel 1102 for thecurrent victim head. In some instances, the timing relationshipdifference is a timing shift that is experienced by the aggressor head,and in other instances, the timing relationship difference is a timingoffset between the aggressor head and the base aggressor head. As notedabove, the timing relationship difference causes the transfer functionson which victim feedforward kernel 1102 is based to be less accurate,and the victim feedforward signal 1003 generated by victim feedforwardkernel 1102 is less effective at canceling the effect of aggressordisturbances on victim head position. According to various embodiments,interpolated VCM command values 1240 are used by victim feedforwardkernel 1102 instead of VCM command values 1200 to compensate for such atiming relationship difference between the victim head and the aggressorhead.

In FIG. 12B, VCM command values 1200 are calculated for an aggressorseek. Victim feedforward kernel 1102 generates a victim feedforwardsignal 1003 based on a transfer function that assumes there is no timingshift, timing offset, or other timing relationship difference betweenthe current victim head and the aggressor head that affects the accuracyof victim feedforward kernel 1102. However, in the instance illustratedin FIG. 12B, there is a timing offset 1260 that is indicated by ahorizontal displacement between an assumed time that the aggressor headcrosses wedge N and an actual time the aggressor head crosses wedge N.For example, timing offset 1260 can be caused by the aggressor headbeing a different head than the base aggressor head used to determinevictim feedforward kernel 1102. Alternatively or additionally, timingoffset 1260 can be caused by a timing shift that is experienced by theaggressor head. In the instance illustrated in FIG. 12B, the aggressorhead crosses each servo wedge earlier than a time assumed by victimfeedforward kernel 1102.

Similarly, in FIG. 12B there is a timing offset 1261 between an assumedtime that the aggressor head crosses wedge N−1 and an actual time theaggressor head crosses wedge N−1, a timing offset 1262 between anassumed time that the aggressor head crosses wedge N−2 and an actualtime the aggressor head crosses wedge N−2, a timing offset 1263 betweenan assumed time that the aggressor head crosses wedge N−3 and an actualtime the aggressor head crosses wedge N−3, and a timing offset 1264between an assumed time that the aggressor head crosses wedge N−4 and anactual time the aggressor head crosses wedge N−4. In the instanceillustrated in FIG. 12B, timing offset 1260, timing offset 1261, timingoffset 1262, timing offset 1263, and timing offset 1264 aresubstantially equal in magnitude, but in other embodiments, each timingoffset can have a different magnitude for each servo wedge of arecording surface.

According to various embodiments, VCM command interpolator 1101determines interpolated VCM command values 1240 (denoted by triangles)based on VCM command values 1200 (denoted by circles) and correspondingtiming offsets. In some embodiments, an interpolated VCM command value1240 for a particular servo wedge is linearly interpolated from the VCMcommand value determined for that servo wedge and the VCM command valuedetermined for an adjacent servo wedge. In such embodiments, themagnitude of the timing offset at that particular servo wedge indicateswhere along the interpolation function the particular interpolated VCMcommand value 1240 lies. For example, in some embodiments, interpolatedVCM command value 1250 is based on a VCM command value 1209 calculatedfor servo wedge N+1, VCM command 1210 calculated for servo wedge N, andtiming offset 1260; interpolated VCM command value 1251 is based on aVCM command value 1210 calculated for servo wedge N, VCM command 1211calculated for servo wedge N−1, and timing offset 1261; interpolated VCMcommand value 1252 is based on a VCM command value 1211 calculated forservo wedge N−1, VCM command 1212 calculated for servo wedge N−2, andtiming offset 1262; and so on.

In an embodiment illustrated in FIG. 12B, interpolated VCM command value1250 is linearly interpolated from VCM command value 1209 and VCMcommand 1210 using timing offset 1260. In other embodiments,interpolated VCM command value 1250 for servo wedge N is determinedusing any other technically feasible interpolation between VCM commandvalue 1209 (calculated for servo wedge N+1) and VCM command 1210(calculated for servo wedge N), or including VCM command values fromearlier wedges. Alternatively, in an instance in which the value oftiming offset 1260 is negative, the aggressor head crosses each servowedge later than assumed by victim feedforward kernel 1102. In someembodiments, in such an instance, interpolated VCM command value 1250for servo wedge N is determined using any technically feasibleinterpolation between VCM command value 1210 (calculated for servo wedgeN), VCM command 1211 (calculated for servo wedge N−1) and timing offset1260.

In the embodiment described above in conjunction with FIG. 12B, a singleVCM command value 1200 is associated with each servo wedge, and VCMcommand interpolator 1101 generates a single interpolated VCM commandvalue 1240 for each servo wedge. Thus, FIG. 12B depicts the generationof interpolated VCM command values 1240 for a single-rate controlsystem. In other embodiments, VCM command interpolator 1101 isconfigured for operating in conjunction with a multi-rate controlsystem, and therefore generates multiple interpolated VCM command values1240 for each servo wedge. In such embodiments, for each servo wedge,there are, for example, L associated multi-rate VCM command values.Consequently, VCM command interpolator 1101 generates L interpolatedmulti-rate VCM command values 1240 for each servo wedge, where the firstinterpolated multi-rate VCM command value 1240 for a servo wedge isbased on the first multi-rate VCM command value determined for thatservo wedge and the first multi-rate VCM command value determined for anadjacent servo wedge; the second interpolated multi-rate VCM commandvalue 1240 for the servo wedge is based on the second multi-rate VCMcommand value determined for that servo wedge and the second multi-rateVCM command value determined for the adjacent servo wedge, and so on tothe L^(th) multi-rate VCM command value determined for that servo wedge.

Returning to FIG. 11 , victim feedforward signal interpolator 1103 isconfigured to modify values of a victim feedforward signal prior tobeing stored and added to a subsequent microactuator control signal. Forexample, in some embodiments, victim feedforward signal interpolator1103 modifies values of victim feedforward signal 1003 (shown in FIGS.10A and 10B) before the values of victim feedforward signal 1003 arestored in victim feedforward value buffer 785 (shown in FIG. 8A) andadded to microactuator control signal 1045 (shown in FIG. 10A). Similarto how VCM command interpolator 1101 modifies VCM command values priorto use by victim feedforward kernel 1102 based on the timing offsetbetween the victim head and the aggressor head, victim feedforwardsignal interpolator 1103 modifies values of a victim feedforward signalbased on the timing offset between the victim head and the aggressorhead. Such embodiments are described below in conjunction with FIG. 13 .

FIG. 13 is a plot of victim feedforward signal values 1300 andinterpolated victim feedforward signal values 1350-1354 (referred tocollectively as interpolated victim feedforward signal values 1340),according to various embodiments. Victim feedforward signal values 1300(denoted by circles) are initially calculated for controlling theposition of a victim head that is disturbed by an aggressor seek, suchas values of victim feedforward signal generated by victim feedforwardkernel 1102 in FIG. 11 . Interpolated victim feedforward signal values1350-1354 (denoted by triangles) are signals that are actually used forcontrolling the position of a victim head that is disturbed by anaggressor seek instead of victim feedforward signal values 1300.Specifically, interpolated victim feedforward signal values 1340 areemployed instead of victim feedforward signal values 1300 in order tocompensate for certain timing relationship differences between thevictim head and the aggressor head. One example of such a timingrelationship difference is a timing shift that is experienced by thevictim head, for example due to a circumferential displacement or othercircumferential misalignment of the victim head. Such a timing shiftalters the timing offset between the victim head and the aggressor headfrom an initial timing offset (such as an initial timing offset 600 inFIG. 6 ).

In some embodiments, when there is no timing relationship differencebetween the victim head and the aggressor head that is not accounted forby the victim feedforward kernel 1102 for the current victim head,victim feedforward signal values 1300 can be added to a microactuatorcontrol signal without being modified by victim feedforward signalinterpolator 1103. By contrast, in the embodiment illustrated in FIG. 13, there is a timing relationship difference between the victim head andthe aggressor head that is not accounted for by the victim feedforwardkernel 1102 for the current victim head. As noted above, such a timingrelationship difference can cause the transfer function on which victimfeedforward kernel 1102 is based to be less accurate.

In FIG. 13 , victim feedforward signal values 1300 are calculated for avictim head based on the assumption that there is no timing shift,timing offset, or other timing relationship difference between thecurrent victim head and the aggressor head that affects the accuracy ofvictim feedforward kernel 1102. However, in the instance illustrated inFIG. 13 , there is a timing offset 1360 that is indicated by ahorizontal displacement between an assumed time that the aggressor headcrosses wedge N and an actual time the aggressor head crosses wedge N(or alternatively, a timing offset between an assumed time that thevictim head crosses a particular wedge and an actual time that thevictim head crosses that wedge). Thus, the aggressor head crosses eachservo wedge earlier than assumed by victim feedforward kernel 1102. Thatis, there is a timing offset 1360 that is indicated by a horizontaldisplacement in FIG. 13 between an assumed time that the aggressor headcrosses wedge N and an actual time the aggressor head crosses wedge N.Similarly, in FIG. 13 there is a timing offset 1361 between an assumedtime that the aggressor head crosses wedge N−1 and an actual time theaggressor head crosses wedge N−1, a timing offset 1362 between anassumed time that the aggressor head crosses wedge N−2 and an actualtime the aggressor head crosses wedge N−2, a timing offset 1363 betweenan assumed time that the aggressor head crosses wedge N−3 and an actualtime the aggressor head crosses wedge N−3, and a timing offset 1364between an assumed time that the aggressor head crosses wedge N−4 and anactual time the aggressor head crosses wedge N−4. In the instanceillustrated in FIG. 13 , timing offset 1360, timing offset 1361, timingoffset 1362, timing offset 1363, and timing offset 1364 aresubstantially equal in magnitude, but in other embodiments, each timingoffset can have a different magnitude for each servo wedge.

According to various embodiments, victim feedforward signal interpolator1103 determines each interpolated victim feedforward signal value 1340based on victim feedforward signal values 1300 and a correspondingtiming offset. In some embodiments, an interpolated victim feedforwardsignal value 1340 for a particular servo wedge is linearly interpolatedfrom the victim feedforward signal value 1300 determined for that servowedge and the victim feedforward signal value 1300 determined for anadjacent servo wedge. In such embodiments, the magnitude of the timingoffset at that particular servo wedge indicates where along theinterpolation function the particular interpolated victim feedforwardsignal value 1340 lies.

In an embodiment illustrated in FIG. 13 , interpolated victimfeedforward signal values 1340 are linearly interpolated from victimfeedforward signal values 1300 based on timing offsets 1360-1364. Inother embodiments, an interpolated victim feedforward signal value 1340for a particular servo wedge is determined using any other technicallyfeasible interpolation between the victim feedforward signal value 1300for the servo wedge and the victim feedforward signal value 1300 for anadjacent servo wedge. Further, as described above for VCM commandinterpolator 1101, in some embodiments, victim feedforward signalinterpolator 1103 is configured for operating in conjunction with amulti-rate control system, and therefore generates multiple interpolatedvictim feedforward signal values 1340 for each servo wedge.

Using Interpolated Victim Feedforward Signal for Controlling Victim HeadPosition

FIG. 14 sets forth a flowchart of method steps for controlling magnetichead position in a multi-actuator HDD, according to an embodiment. Insome embodiments, the method steps are performed in HDD 100 duringnormal operation of HDD 100. Although the method steps are described inconjunction with HDD 100 of FIGS. 1-13 , persons skilled in the art willunderstand that the method steps may be performed with other types ofsystems. The control algorithms for the method steps may reside inmicroprocessor-based controller 133, motor-driver chip 125, or acombination of both. The control algorithms can be implemented in wholeor in part as software- or firmware-implemented logic, and/or ashardware-implemented logic circuits.

Prior to the method steps, values for a victim feedforward generator 783of HDD 100 are determined, such as via method 1600 of FIG. 16 . Forexample, in an embodiment in which HDD 100 includes N read/write heads127, where N is a positive integer, at least N sets of values aredetermined and stored for use by victim feedforward generator 783. Inthe embodiment, each set of values corresponds to a kernel that isderived from a feedforward transfer function for a different read/writehead 127. Thus, victim feedforward generator 783 can generate adifferent victim feedforward signal to a victim microactuator dependingon which of the N read/write heads 127 of HDD 100 is currently thevictim head. In such embodiments, the values for victim feedforwardgenerator 783 for each of the N victim read/write heads 127 can bedetermined using the same base aggressor head. Therefore, in suchembodiments, N sets of values are determined and stored for use byvictim feedforward generator 783.

In some embodiments, prior to the method steps, M sets of values, whereM is a positive integer, are determined and stored for use by victimfeedforward generator 783 for each of the N read/write heads 127. Forexample, in one such embodiment, each of the M different sets of valuesfor a particular read/write head 127 corresponds to a differenttemperature range in which HDD 100 may operate and for which a differentvictim feedforward transfer function is applicable. Thus, in theembodiment, victim feedforward generator 783 can generate M differentvictim feedforward signals 1003 for a single read/write head 127,depending on the temperature range in which HDD 100 is operating at thetime. Alternatively or additionally, in some embodiments, prior to themethod steps, K sets of values, where K is a positive integer, aredetermined and stored for use by victim feedforward generator 783 foreach of the N read/write heads 127. For example, in one such embodiment,each of the K different sets of values for a particular read/write head127 corresponds to a different radial location of the victim head. Thus,in the embodiment, victim feedforward generator 783 can generate Kdifferent victim feedforward signals 1003 for a single read/write head127, depending on the radial location of the victim head at the time.Further, in some embodiments, victim feedforward generator 783 cangenerate K×M different victim feedforward signals 1003 for a singleread/write head 127, depending on the radial location of the victim headand the temperature range in which HDD 100 is operating at the time.

A method 1400 begins at step 1401, when a suitable controller (e.g.,microprocessor-based controller 133 and/or motor-driver chip 125)determines a specific set of values to be retrieved from a memory byvictim feedforward generator 783 to generate an appropriate victimfeedforward signal 1003. For purposes of discussion below, the specificset of values to be retrieved from a memory by victim feedforwardgenerator 783 to generate an appropriate victim feedforward signal willbe referred to as a victim feedforward kernel. The controller thenretrieves the specific set of values from the appropriate memory of HDD100.

The controller determines the specific set of values based on which ofthe N read/write heads 127 of HDD 100 is currently designated to be thevictim head. Additionally, in some embodiments, the controllerdetermines the specific set of values further based on which of Mdifferent predetermined temperature ranges HDD 100 is currentlyoperating in. Additionally or alternatively, in some embodiments, thecontroller determines the specific set of values further based on whichof K different radial locations the victim head currently occupies.Thus, in some embodiments, the controller determines the specific set ofvalues from N different sets of values; in other embodiments, thecontroller determines the specific set of values from N×M different setsof values; in other embodiments, the controller determines the specificset of values from N×K different sets of values; and in yet otherembodiments, the controller determines the specific set of values fromN×M×K different sets of values. In yet other embodiments, the controllermay determine the set of values based upon a combination of one or moreof the up to N×M×K different sets of values, using interpolation betweentwo or more sets of values, based upon temperature range, victimlocation, or other operating parameters.

In some embodiments, all of the disk surfaces associated with actuatorarm assembly 120A (for example, recording surfaces 112A-112D in FIG. 2 )are servo-written in such a manner that the servo samples are aligned intime. In other words, a servo wedge on surface 112A passes underread/write head 227A at about the same time that a servo wedge onsurface 112B passes under read/write head 227B, and so on. For thisreason, the timing of commands sent to VCM 128A (as part of the responseof first servo controller 715 to the measured position of any read/writehead associated with that VCM) should be relatively independent of whichread/write head is currently under servo control. In such a case,coordination of fractional-wedge timing of an aggressor actuator and avictim actuator may not be employed for generating a victim feedforwardsignal.

In step 1402, the controller receives or determines a radial positiongenerated by the victim head, such as radial position 1005, and a radialposition generated by the aggressor head. Generally, the controllerreceives or determines the position signal generated by the victim headas the victim head passes over a servo wedge N on a recording surface112 of HDD 100 associated with the victim head. Similarly, thecontroller receives or determines the position signal generated by theaggressor head as the aggressor head passes over the servo wedge N on arecording surface 112 of HDD 100 associated with the aggressor head. Theposition signal for the victim head is employed to enable the victimservo loop to function, and the position signal for the aggressor headis employed to enable the aggressor servo loop to function. In thisdescription, it is assumed that the aggressor and victim pass overwedge-number N at about the same time. While this may be the case insome embodiments, in other embodiments the aggressor head may pass overwedge N at about the time that victim head passes over wedge P.

In step 1411, the controller generates an aggressor VCM control signalfor moving the aggressor actuator of HDD 100. The controller generatesthe aggressor VCM control signal based on aggressor head position signalreceived in step 1402. In instances in which VCM 128A is the aggressoractuator and VCM 128B is the victim actuator, the controller generatingthe aggressor VCM control signal corresponds to first servo controller715 in FIG. 7 .

In step 1412, the controller generates a microactuator control signalfor the aggressor head based on the radial position received ordetermined in step 1402.

In optional step 1415, the aggressor VCM control signal generated instep 1411 and/or the microactuator control signal for the aggressor headgenerated in step 1412 is modified with one or more notch filters, suchas notch filters 1011 or 1012. For example, in an embodiment, a notchfilter modifies the microactuator signal for the aggressor head toproduce a filtered microactuator signal for the aggressor microactuator.In some embodiments, the microactuator control signal for the aggressorhead passes through all portions of the notch filter, whereas in otherembodiments, the microactuator control signal for the aggressor headdoes not pass through all filtering portions of the notch filter.Alternatively or additionally, in some embodiments, the aggressor VCMcontrol signal for the aggressor head is processed by a notch-filter. Inthe embodiment of method 14 described herein, the controller operatesusing control diagram 1000 of FIG. 10A. In other embodiments, thecontroller can operate using control diagram 1050 of FIG. 10B, in whichthe modification of signals with notch filters can occur in a differentstep than step 1415.

In step 1416, the controller asserts the aggressor VCM control signaland the microactuator control signal. Thus, the aggressor VCM controlsignal is asserted by the aggressor actuator (e.g., VCM 128A) and themicroactuator control signal for the aggressor head is asserted by theaggressor microactuator (e.g., one of microactuators 228A-D). Generally,the aggressor VCM control signal is applied to the aggressor actuatorand the microactuator control signal for the aggressor head is appliedto the aggressor microactuator prior to the aggressor head passing overthe next servo wedge. For example, when the controller receives ordetermines the position signal in step 1402 immediately after theaggressor head passes over a servo wedge N, in step 1416, the controllerasserts the aggressor VCM control signal and the microactuator controlsignal prior to the aggressor head passing over servo wedge N+1. In thisway, the radial position and/or velocity profile of the aggressor headis modified prior to the aggressor head passing over servo wedge N+1. Insome embodiments, the controller asserts multiple aggressor VCM controlsignals and the microactuator control signals in step 1416 when theservo system for the aggressor actuator is configured as a multi-ratecontrol system.

In step 1417, the aggressor head generates another position signal asthe aggressor head passes over the next servo wedge. Upon completion ofstep 1417, method 1400 returns back to step 1402.

It is noted that in some embodiments, step 1428 occurs substantiallyconcurrently with step 1417. That is, in such embodiments, the victimhead passes over the next servo wedge on the recording surfaceassociated with the victim head at approximately the same time that theaggressor head passes over the next servo wedge on the recording surfaceassociated with the aggressor head. Therefore, in such embodiments, thevictim head generates another position signal for the victim head instep 1428 at approximately the same time that the aggressor headgenerates another position signal for the aggressor head in step 1417.In such embodiments, each servo wedge on the recording surfaceassociated with the aggressor head is circumferentially aligned with arespective servo wedge on the recording surface associated with theaggressor head.

Step 1430 is performed upon completion of step 1415, in which anaggressor VCM control signal or signals for moving the aggressoractuator of HDD 100 is modified by (for example) notch filter 1012. Instep 1430, the controller determines an interpolated aggressor VCMcommand(s), such as interpolated VCM command values 1240 in FIG. 12B.For example, in an embodiment, VCM command interpolator 1101 determinesa single interpolated aggressor VCM command 1240 for servo wedge N whenthe servo system for the victim actuator is configured as a single-ratecontrol system. In another example, VCM command interpolator 1101determines multiple interpolated aggressor VCM commands 1240 for servowedge N when the servo system for the victim actuator is configured as amulti-rate control system. In some embodiments, the interpolatedaggressor VCM commands 1240 for servo wedge N are determined based onthe aggressor modified VCM command generated in step 1415. Inalternative embodiments, the input value for step 1430 is provided bystep 1411 instead of step 1415. In such embodiments, the interpolatedaggressor VCM commands 1240 for servo wedge N are determined in step1430 based on the aggressor VCM command(s) that are generated by thecontroller for moving the aggressor actuator of HDD 100. In someembodiments, in instances in which there is no significant timingrelationship difference between the current victim head and theaggressor head, interpolated aggressor VCM commands 1240 are notdetermined, and the aggressor the VCM command(s) that are generated bythe controller for moving the aggressor actuator of HDD 100 are employedin steps 1431 and 1432.

In step 1431, the controller stores the aggressor VCM command(s) forservo wedge N in a memory of HDD 100. For example, in an instance inwhich VCM 128A is the aggressor actuator, the controller stores theaggressor VCM command(s) for servo wedge N in aggressor VCM commandbuffer 774 for first servo controller 715. In an instance in which thereis a significant timing offset between the current victim head and theaggressor head, the controller stores the interpolated aggressor VCMcommands 1240 that are generated in step 1430. In instances in whichthere is no significant timing offset between the current victim headand the aggressor head, the controller stores the aggressor the VCMcommand(s) that are generated by the controller in step 1411 for movingthe aggressor actuator of HDD 100.

In step 1432, the controller generates a victim feedforward signal orsignals for servo wedge N+W, where W is the wedge offset number for HDD100. The controller generates the victim feedforward signal or signalsbased on the aggressor VCM control signal(s) stored in step 1431 and onthe set of values selected in step 1401. The set of values is derivedfrom the appropriate feedforward transfer function for the victim head.Generally, the feedforward transfer function models commands to be addedto the microactuator control signal as a function of the aggressor VCMcontrol signal generated in step 1411 and of recent previous values ofthat aggressor VCM control signal, e.g., the J most recent values of theaggressor VCM control signal. In some embodiments, the J most recentvalues of the aggressor VCM control signal are stored in a memory of HDD100, such as aggressor VCM command buffer 774 or 784. As noted above, ininstances in which there is a significant timing relationship differencebetween the current victim head and the aggressor head, the aggressorVCM control signals employed in step 1432 are the interpolated aggressorVCM commands 1240 that are generated in step 1430.

In some embodiments, for a particular read/write head 127, victimfeedforward signal 1003 is generated using the feedforward kernel forthat particular read/write head 127. In one such embodiment, a value forthe victim feedforward signal is calculated using Equation 1:

$\begin{matrix}{{{victimFF}(j)} = {\sum\limits_{k = W}^{J - 1}{{{Kernel}(k)}*{{VCMCMD}\left( {j - k} \right)}}}} & (1)\end{matrix}$

where victimFF(j) is the jth (current) value of victim feedforwardsignal 1003 for the particular read/write head 127, Kernel(k) is the kthkernel element, and VCMCMD(j) is the jth VCM-CMD, and W is the wedgeoffset number for HDD 100. According to various embodiments, wedgeoffset number W is an integer greater than 0. As a result, the first Wvictim feedforward kernel values are effectively forced to be zero. Theinteger J is the number of kernel elements that are included in thekernel for the particular read/write head 127. In some embodiments, J isselected so that kernel elements past Kernel(J−1) are very small. Thatis, generally, Kernel(j) begins with a particular magnitude (that canvary significantly from one sample to the next), and, over time, themagnitude of Kernel(j) gradually gets smaller (though possibly withincreasing and decreasing oscillations). Thus, once sample #J, isreached, Kernel(j) typically approaches zero.

For the case of a multi-rate control system (for example one in whichthe VCM control signal 743 is updated at twice the rate at which thevictim's read/write head 1005 is determined), the formula would beextended to Equation 2:

$\begin{matrix}{{{victimFF}(j)} = {{\sum\limits_{k = W}^{J - 1}{Kerne{l_{0}(k)}*VCMCM{D_{0}\left( {j - k} \right)}}} + {\sum\limits_{k = W}^{J - 1}{Kerne{l_{1}(k)}*VCMCM{D_{1}\left( {j - k} \right)}}}}} & (2)\end{matrix}$

Where VCMCMD0(j) is the jth value of the first VCM-CMD of each servosample, VCMCMD1(j) is the jth value of the second VCM-CMD of each servosample, Kernel0(k) is the kth kernel element (applied to firstVCM-CMDs), and Kernel1(k) is the kth kernel element (applied to thesecond VCM-CMDs).

In step 1433, the controller stores the victim feedforward signalgenerated in step 1432 for servo wedge N+W in a memory of HDD 100. Forexample, in an instance in which VCM 128A is the aggressor actuator, thecontroller stores the aggressor VCM control signal in victim feedforwardvalue buffer 785 for second servo controller 716. The controller furtherstores a corresponding servo wedge number 1002 that indicates a servowedge that is offset from servo wedge N by the wedge offset value W.

In step 1421, the controller generates a victim VCM control signal formoving the victim actuator of HDD 100. The controller generates thevictim VCM control signal based on victim head position signal receivedin step 1402. In instances in which VCM 128A is the aggressor actuatorand VCM 128B is the victim actuator, the controller generating thevictim VCM control signal corresponds to second servo controller 716 inFIG. 7 .

In step 1422, the controller generates a microactuator control signalfor the victim head based on the radial position received or determinedin step 1402.

In step 1423, in an instance in which there is no significant timingrelationship difference between the current victim head and theaggressor head, the controller retrieves a suitable victim feedforwardentry 901 for servo wedge N from a memory of HDD 100, such as victimfeedforward value buffer 785. The controller determines the suitablevictim feedforward entry 901 to retrieve based on servo wedge numbers902. In some embodiments, each servo wedge number 902 indicates arespective servo wedge of a recording surface associated with theaggressor actuator. In such embodiments, the controller selects thevictim feedforward entry 901 associated with the servo wedge number 902in victim feedforward value buffer 785 that indicates a servo wedge ofthe recording surface associated with the aggressor actuator that isoffset from the servo wedge N by the preset wedge offset value W, whereservo wedge N is the servo wedge from which the position signal in step1402 is generated. Thus, in such embodiments, the controller selects thevictim feedforward entry 901 that is generated based on servo wedge N−Wof the recording surface associated with the aggressor actuator. Forexample, when the preset wedge offset value is two, the controllerselects the victim feedforward entry 901 associated with the servo wedgenumber 902 that indicates servo wedge N−2 of the recording surfaceassociated with the aggressor actuator. Alternatively, in someembodiments, each servo wedge number 902 indicates a respective servowedge of a recording surface associated with the victim actuator. Insuch embodiments, the controller selects the victim feedforward entry901 associated with the servo wedge number 902 in victim feedforwardvalue buffer 785 that indicates the servo wedge from which the positionsignal in step 1402 is generated, for example, servo wedge N of therecording surface associated with the victim actuator.

Alternatively, in an instance in which there is a significant timingoffset between the current victim head and the aggressor head, in step1423 the controller retrieves two suitable victim feedforward entries901 from the memory of HDD 100. Specifically, the controller retrievesthe victim feedforward entry 901 for servo wedge N and the victimfeedforward entry 901 for a servo wedge that is adjacent to servo wedgeN. It is noted that the victim feedforward entry 901 for servo wedge Nis generated based on servo wedge N−W of the recording surfaceassociated with the aggressor actuator. When the value of the timingoffset between the victim head and the aggressor head is positive, andtherefore the aggressor head crosses servo wedge N before the currentvictim head crosses servo wedge N, the servo wedge that is adjacent toservo wedge N is servo wedge N+1. Conversely, when the value of thetiming offset between the victim head and the aggressor head isnegative, and therefore the aggressor head crosses servo wedge N afterthe current victim head crosses servo wedge N, the servo wedge that isadjacent to servo wedge N is servo wedge N−1. As described above, thecontroller determines the suitable victim feedforward entries 901 toretrieve for servo wedge N based on servo wedge numbers 902.

In step 1424, in an instance in which there is a significant timingrelationship difference between the current victim head and theaggressor head, the controller determines an interpolated victimfeedforward signal value 1340 for servo wedge N, for example via victimfeedforward signal interpolator 1103. In some embodiments, theinterpolated victim feedforward signal value 1340 is based on the twovictim feedforward entries 901 retrieved for servo wedge N and anadjacent wedge in step 1423. Alternatively, in an instance in whichthere is no significant timing relationship difference between thecurrent victim head and the aggressor head, no interpolated victimfeedforward signal value 1340 is determined for servo wedge N in step1424. Instead, step 1424 is not performed.

In step 1425, the controller combines the victim microactuator controlsignal and a victim feedforward signal to produce a correctedmicroactuator signal. In an instance in which there is a significanttiming relationship difference between the current victim head and theaggressor head, in step 1425 the controller combines the victimmicroactuator control signal and an interpolated victim feedforwardsignal to produce the corrected microactuator signal. Alternatively, ininstance in which there is no significant timing offset between thecurrent victim head and the aggressor head, in step 1425 the controllercombines the victim microactuator control signal and a victimfeedforward signal generated in step 1432 to produce the correctedmicroactuator signal.

In optional step 1426, the victim VCM control signal generated in step1421 and/or the corrected victim microactuator control signal generatedin step 1425 is modified via one or more notch filters, such as notchfilters 1021 or 1022. For example, in an embodiment, a notch filtermodifies the corrected microactuator signal for the victim head toproduce a filtered corrected microactuator signal for the victimmicroactuator. In some embodiments, the corrected microactuator controlsignal for the victim head passes through all portions of the notchfilter, whereas in other embodiments, the filtered correctedmicroactuator control signal for the victim head does not pass throughall filtering portions of the notch filter. Alternatively oradditionally, in some embodiments, the victim VCM control signal for theaggressor head is processed by a notch-filter. In the embodiment ofmethod 14 described herein, the controller operates using controldiagram 1000 of FIG. 10A. In other embodiments, the controller canoperate using control diagram 1050 of FIG. 10B, in which themodification of signals with notch filters can occur in a different stepthan step 1426.

In step 1427, the controller asserts the victim VCM control signal andthe filtered corrected microactuator control signal for servo wedge N.Thus, the victim VCM control signal is applied to the victim actuator(e.g., VCM 128B) and the filtered corrected microactuator control signalfor the victim head is applied to the victim microactuator (e.g., one ofmicroactuators 228E-H). Generally, the victim VCM control signal isapplied to the victim actuator and the filtered corrected microactuatorcontrol signal for the victim head is applied to the victimmicroactuator prior to the victim head passing over the next servowedge. For example, when the controller receives or determines theposition signal in step 1402 immediately after the victim head passesover servo wedge N, in step 1427, the controller asserts the victim VCMcontrol signal and the filtered corrected microactuator control signalprior to the victim head passing over servo wedge N+1. In this way, theradial position and/or velocity profile of the victim head is modifiedprior to the victim head passing over servo wedge N+1.

In step 1428, the victim head generates another position signal as thevictim head passes over the next servo wedge. Upon completion of step1428, method 1400 returns back to step 1402.

Implementation of method 1400 enables a suitable victim feedforwardsignal to be determined and added to a microactuator for a victim head,thereby reducing or eliminating the effect of aggressor actuator motionon the positioning accuracy of the victim head.

Determining Timing Relationship Differences for Feedforward SignalGeneration

As noted previously, timing relationship differences between differentvictim and aggressor heads can occur over the life of a disk drive.Further, such timing relationship differences can be a significantfraction of the time interval required for a read/write head to moveacross the circumferential separation between adjacent servo wedges, andcan significantly affect the accuracy of certain victim disturbancefeedforward control schemes. Consequently, to compensate for such timingrelationship differences, timing shifts for each read/write head of adrive are measured at certain times over the lifetime of a disk drive.The measured timing shifts can then be applied by VCM commandinterpolator 1101 for interpolation of VCM commands for an aggressorhead and/or victim feedforward signal interpolator 1103 forinterpolation of a victim feedforward signal for a victim head. One suchembodiment is described below in conjunction with FIG. 15 .

FIG. 15 sets forth a flowchart of method steps for measuring timingshifts for each read/write head of a drive, according to an embodiment.Although the method steps are described in conjunction with HDD 100 ofFIGS. 1-14 , persons skilled in the art will understand that the methodsteps may be performed with other types of systems. The controlalgorithms for the method steps may reside in microprocessor-basedcontroller 133, motor-driver chip 125, or a combination of both. Thecontrol algorithms can be implemented in whole or in part as software-or firmware-implemented logic, and/or as hardware-implemented logiccircuits.

A method 1500 begins at step 1501, when a suitable controller (e.g.,microprocessor-based controller 133 and/or motor-driver chip 125)determines a victim feedforward kernel 1102 for each read/write head ofHDD 100. Example embodiments for the determination of the feedforwardtransfer function for victim feedforward kernel 1102 are described belowin conjunction with FIGS. 16-18 .

In step 1502, the controller determines timing differences between theread/write heads of HDD 100. Thus, for a first actuator (e.g., VCM128A), the controller measures timing-differences between one specificread/write head on a second actuator (e.g., VCM 128B) and eachread/write head on the first actuator. Thus, when the chosen head on thesecond actuator is (for example) head number 1 (from the multipleread/write heads of the second actuator), then the differences arerepresented by a set of values TD_b_1_(k), where k is in the range {1:K}and K is the number of servo wedges per revolution, and b is in therange {1:B} and B is the total number of read/write heads of the firstactuator. Similarly, for the second actuator, the controller measurestiming-differences between one specific read/write head on the firstactuator and each read/write head on the second actuator. Thus, when thechosen head on the first actuator is (for example) head number 1 (fromthe multiple read/write heads of the first actuator), then thedifferences are represented by a set of values TD_1_a_(k), where a is inthe range {1:A} and A is the total number of read/write heads of thesecond actuator. Set of values TD_1_a_(k) and set of values TD_b_1_(k),include sufficient information to define the timing differences betweenany pair of read/write head of HDD 100 (either cross-actuator head pairsor same-actuator head pairs).

In some embodiments, the timing difference values included in aparticular set of values TD_1_a_(k) or set of values TD_b_1_(k) can bedetermined while servoing simultaneously on the pair of heads associatedwith the particular set of values being measured. In such embodiments,the timing difference values are measured via any technically feasibletiming approach. For example, in some embodiments, a disk-synchronizedor free-running clock included in HDD 100 can be employed to detect whena specific event occurs at a particular servo wedge for each head, suchas when each head passes a rising edge, sync mark, or other feature ofthat particular servo wedge. Because such clocks generally include 1000or more counts per servo wedge, in such embodiments the timingdifference values so measured can indicate timing differences betweentwo heads with high granularity.

In step 1503, the controller determines representative timing offsetcomponents for each pair of read/write heads of HDD 100. In someembodiments, the controller determines, for each pair of read/writeheads of HDD 100, an average offset value (referred to herein asTD_AVG_b_1 for the read/write heads of the first actuator and TD_AVG_1_afor the read/write heads of the second actuator), an “in-phase”component of sinusoidal variation at the spin-speed (referred to hereinas TD_COS_b_1 for the read/write heads of the first actuator andTD_COS_1_a for the read/write heads of the second actuator), and a“quadrature” component of sinusoidal variation at the spin-speed(referred to herein as TD_SIN_b_1 for the read/write heads of the firstactuator and TD_SIN_1_a for the read/write heads of the secondactuator). In such embodiments, the average offset value, the in-phasecomponent, and the quadrature component for a particular pair ofread/write heads of HDD 100 are determined based on a timing differencedata set associated with that particular pair of read/write heads. Forexample, such a data set includes a measured timing difference value(measured in step 1502) for K servo wedges. These representative timingoffset components are the base timing difference values for each pair ofread/write heads of HDD 100.

In the embodiment described above, timing differences for a particularpair of read/write heads is assumed to vary sinusoidally once perrevolution of K servo wedges of a recording surface. In otherembodiments, the timing differences for a particular pair of read/writeheads can be assumed to vary sinusoidally multiple times per revolutionof K servo wedges of a recording surface. In such embodiments,additional representative timing offset components may be computed inaddition to the above-described average offset value, in-phase componentvalue, and quadrature component value.

In step 1504, the controller determines whether a calibration conditionhas been met. For example, in some embodiments, a calibration conditioncan be the lapsing of a specific time period or the occurrence of aspecific event (such as system start up, system power down, detection ofa shock, determination that a specific performance threshold has notbeen met, and the like). In some embodiments, a calibration conditioncan be the determination that one or more timing shifts of a sufficientmagnitude have been experienced by one or more read/write heads. In suchembodiments, timing differences are measured passively by the controllerduring normal operation of HDD 100. If a calibration condition has beenmet, method 1500 proceeds to step 1505; if no calibration condition hasbeen met, method 1500 returns to step 1504.

In step 1505, the controller determines timing differences between theread/write heads of HDD 100. In some embodiments, procedures describedabove in step 1502 can be performed. In such embodiments, new values forset of values TD_1_a_(k) and set of values TD_b_1_(k) are determined.Alternatively, in some embodiments, timing differences are measuredpassively by the controller during normal operation of HDD 100. In suchembodiment, step 1505 is not performed. In such embodiments, timingdifferences between whichever read/write heads of HDD 100 are currentlybeing used can be measured using procedures described above in step 1502to determine the requisite values for set of values TD_1_a_(k) and setof values TD_b_1_(k).

In step 1506, the controller determines timing shifts of each read/writehead of HDD 100. In some embodiments, such timing shifts are determinedbased on the information included in set of values TD_1_a_(k) and set ofvalues TD_b_1_(k), which is collected in step 1505. For example, in anembodiment, the base values in set of values TD_1_a_(k) and set ofvalues TD_b_1_(k) are subtracted from the values collected in 1505,thereby determining ΔTD_1_a_(k) and ΔTD_b_1_(k). In some embodiments, aset of simultaneous equations can be constructed and solved to providevalues for the absolute time shift of each read/write of each actuatorusing ΔTD_1_a_(k) and ΔTD_b_1_(k). In such embodiments, valuesindicating the absolute time shift of each read/write head of eachactuator are represented by: ΔT_AVG_ACT1_b and ΔT_AVG_ACT2_a,ΔT_COS_ACT1_b and ΔT_COS_ACT2_a, and ΔT_SIN_ACT1_b and ΔT_SIN_ACT2_a.

With the introduction of one additional constraint, one of skill in theart can apply any suitable method to solve the above-describedsimultaneous equations to determine the values of ΔT_AVG_ACT1_b andΔT_AVG_ACT2_a, ΔT_COS_ACT1_b and ΔT_COS_ACT2_a, and ΔT_SIN_ACT1_b andΔT_SIN_ACT2_a. For example, in some embodiments, the additionalconstraint can be that the average of all of the values in the set ofvalues ΔT_AVG_ACT1_b and all of the values in the set of valuesΔT_AVG_ACT2_a is zero. Alternatively, in some embodiments, theadditional constraint can be that the sum of all of the values in theset of values ΔT_AVG_ACT1_b and all of the values in the set of valuesΔT_AVG_ACT2_a is zero. Alternatively, in some embodiments, theadditional constraint can be provided by minimizing the absolute timingoffset of the worst timing offset of the drive. Thus, in suchembodiments, the largest-magnitude value in the two sets of valuesΔT_AVG_ACT1_b and ΔT_AVG_ACT1_b is minimized.

Alternatively, in some embodiments, in step 1506, the controllerdetermines timing shifts of each read/write head of HDD 100 based on anabsolute timing reference. For example, in such embodiments, a timingdifference for each read/write head of HDD 100 can be determined basedon a timing difference between rising edges of a servo gate signal andan edge of a back-EMF (electro-motive force) zero crossing signal fromspindle motor 114.

In step 1507, the controller updates VCM command interpolator 1101 andvictim feedforward signal interpolator 1103. For example, in someembodiments, the values of ΔT_AVG_ACT1_b and ΔT_AVG_ACT2_a,ΔT_COS_ACT1_b and ΔT_COS_ACT2_a, and ΔT_SIN_ACT1_b and ΔT_SIN_ACT2_a areused by VCM command interpolator 1101 for generating the timing offsetsthat VCM command interpolator 1101 employs to interpolate VCM commandvalues, such as VCM command values 1200. Specifically, in suchembodiments, these values are added to the base values of TD_AVG_ACT1_b,TD_AVG_ACT2_a, TD_COS_ACT1_b, TD_COS_ACT2_a, TD_SIN_ACT1_b, andTD_SIN_ACT2_a, and the timing offsets for interpolating VCM commandvalues are generated.

Additionally or alternatively, in some embodiments, the values ofΔT_AVG_ACT1_b and ΔT_AVG_ACT2_a, ΔT_COS_ACT1_b and ΔT_COS_ACT2_a, andΔT_SIN_ACT_1_b and ΔT_SIN_ACT2_a are used by victim feedforward signalinterpolator 1103 for generating the timing offsets that victimfeedforward signal interpolator 1103 employs to interpolate values ofvictim feedforward signal, such as modifies values of victim feedforwardsignal 1003. Method 1500 then returns to step 1504.

Determination of Victim Feedforward Signal Transfer Function

FIG. 16 sets forth a flowchart of method steps for determining valuesfor a victim feedforward generator in a multi-actuator HDD, according toan embodiment. In the embodiment, a different set of values for thevictim feedforward transfer function is determined for each magnetichead of the multi-actuator HDD. In some embodiments, the method stepsare performed in HDD 100 as part of a calibration/start-up process.Although the method steps are described in conjunction with HDD 100 ofFIGS. 1-10B, persons skilled in the art will understand that the methodsteps may be performed with other types of systems. The controlalgorithms for the method steps may reside in microprocessor-basedcontroller 133, motor-driver chip 125, or a combination of both. Thecontrol algorithms can be implemented in whole or in part as software-or firmware-implemented logic, and/or as hardware-implemented logiccircuits.

A method 1600 begins at step 1601, when a suitable controller (i.e.,microprocessor-based controller 133 and/or motor-driver chip 125)selects a victim read/write head 127 from the read/write headsassociated with VCM 128A or VCM 128B. The selected read/write head 127and associated actuator (either VCM 128A or VCM 128B) are thendesignated as the victim head and the victim actuator, respectively,while another actuator is designated as the aggressor actuator.

In step 1602, the controller determines a first transfer function thatmodels the radial position of the victim head as a function of a controlsignal applied to the aggressor actuator. In some embodiments, in aninstance in which VCM 128A is the aggressor actuator and VCM 128B is thevictim actuator, the first transfer function models radial position 1005of the currently active read/write head associated with VCM 128B as afunction of VCM control signal 743 applied to VCM 128A. In one suchembodiment, the first transfer function can model radial position 1005as a function of filtered VCM control signal 743, which is VCM controlsignal 743 after passing through notch filter 1012. Alternatively, inanother embodiment, the first transfer function models radial position1005 as a function of VCM control signal 1047 prior to being processedby notch filter 1012. One process by which the controller determines thefirst transfer function is described below in conjunction with FIG. 17 .

In step 1603, the controller determines a second transfer function thatmodels the radial position of the victim head as a function of afeedforward signal added to the control signal that is applied to amicroactuator 228 and/or 229 for positioning the victim head. Forexample, in an instance in which VCM 128A is the aggressor actuator andVCM 128B is the victim actuator, in some embodiments the second transferfunction models radial position 1005 of the currently active read/writehead associated with VCM 128B as a function of victim feedforward signal1003 for microactuator 1028B. One process by which the controllerdetermines the second transfer function is described below inconjunction with FIG. 18 .

In step 1604, the controller determines a feedforward transfer functionfor the current victim head. The feedforward transfer function models afeedforward correction signal for the victim head as a function of acontrol signal supplied to the aggressor actuator. For example, in aninstance in which VCM 128A is the aggressor actuator and VCM 128B is thevictim actuator, in some embodiments the feedforward transfer functionmodels victim feedforward signal 1003 (the output of the feedforwardtransfer function) as a function of filtered VCM control signal 743 forVCM 128A (the input of the feedforward transfer function). In someembodiments, the controller determines a feedforward transfer functionfor the current victim head based on a ratio of the first transferfunction determined for the victim head in step 1602 and the secondtransfer function determined for the victim head in step 1603. So thatthe feedforward transfer function substantially cancels the effect offiltered VCM control signal 743, the feedforward transfer function ismultiplied by −1.

In step 1605, the controller generates a victim feedforward kernel forthe current victim head. In some embodiments, the victim feedforwardkernel is based on the feedforward transfer function determined in step1604. For example, in one such embodiment, the controller generates aplurality of values for the victim feedforward kernel for the currentvictim head by determining an inverse discrete Fourier transform ofvalues associated with the first transfer function. The controller thenstores the plurality of values for the victim feedforward kernel in amemory of HDD 100, such as RAM 134 and/or flash memory device 135.Alternatively or additionally, the plurality of values can be programmedinto one or more control algorithms of HDD 100.

In step 1606, the controller determines whether there are any remainingread/write heads 127 in HDD 100 for which a feedforward transferfunction is to be determined. If yes, method 1600 returns to step 1601;if no, method 1600 proceeds to step 1607 and terminates.

In some embodiments, a feedforward transfer function is determined notonly for each different read/write head 127 of HDD 100, but also foreach read/write head 127 at each of multiple temperature ranges. Thus,temperature variations in the mechanical coupling between a victimactuator and an aggressor actuator can be accurately accounted for. Insuch embodiments, a different iteration of method 1600 is performed foreach of the multiple temperature ranges. Thus, a different transferfunction for the same read/write head 127 is determined for each of thedifferent temperature ranges. For example, in one such embodiment, adifferent iteration of method 1600 is performed for each of thefollowing temperature ranges of HDD 100: −5 ŁC to +5 ŁC; +5 ŁC to +15ŁC; +15 ŁC to +25 ŁC; +25 ŁC to +35 ŁC. In other embodiments, adifferent iteration of method 1600 is performed for any othertemperature ranges, including larger temperature ranges than thosedescribed above, smaller temperature ranges than those described above,temperature ranges spanning different thermal ranges, etc. In otherembodiments, a different iteration of method 1600 is performed for oneor more temperature ranges, and kernel values are determined for thosetemperature ranges, plus other temperature ranges, using methods ofinterpolation or extrapolation known to one of skill in the art.

In some embodiments, a feedforward transfer function is determined notonly for each different read/write head 127 of HDD 100, but also forvarious radial locations of each read/write head 127. Thus, variationsin the mechanical coupling between a victim actuator and an aggressoractuator that depend upon the radial location of the victim head can beaccurately accounted for. In such embodiments, a different iteration ofmethod 1600 is performed for each of the multiple radial locations(e.g., proximate the ID, proximate the OD, and/or proximate amid-diameter region). Thus, a different transfer function for the sameread/write head 127 is determined for each of the different radiallocations.

FIG. 17 sets forth a flowchart of method steps for determining atransfer function that models the radial position of a victim head as afunction of a control signal applied to an aggressor actuator, accordingto an embodiment. For consistency with the description of method 1600 inFIG. 16 , such a transfer function is described herein as the “firsttransfer function.” In some embodiments, the method steps are performedin HDD 100 as part of a calibration/start-up process. For example, themethod steps of FIG. 17 may be implemented in step 1602 of method 1600.Although the method steps are described in conjunction with HDD 100 ofFIGS. 1-10B, persons skilled in the art will understand that the methodsteps may be performed with other types of systems. The controlalgorithms for the method steps may reside in microprocessor-basedcontroller 133, motor-driver chip 125, or a combination of both. Thecontrol algorithms can be implemented in whole or in part as software-or firmware-implemented logic, and/or as hardware-implemented logiccircuits.

A method 1700 begins at step 1701, when a suitable controller (i.e.,microprocessor-based controller 133 and/or motor-driver chip 125)selects a disturbance to be injected into or otherwise added to acontrol signal for an actuator that is currently designated as theaggressor actuator. For example, in an instance in which VCM 128A is theaggressor actuator and VCM 128B is the victim actuator, the controllerselects a disturbance to be added to filtered VCM control signal 743before being applied to VCM 128A. It is noted that VCM control signal1047 is generated as part of the closed loop servo control of theaggressor head and then modified to filtered VCM control signal 743.Generally, the controller selects the disturbance to be added to the VCMcommand from a plurality of disturbances that together facilitate thedetermination of the first transfer function. For example, the pluralityof disturbances may include a range of different acceleration valuesthat are each to be individually applied to the aggressor actuatorduring implementation of method 1700.

In some embodiments, the plurality of disturbances is selected to excitethe mechanical systems of first control loop 1020 and second controlloop 1030 over all frequencies of interest. In this way, the firsttransfer function measured in method 1700 more accurately captures theresponse of the mechanical and control systems of first control loop1020 and second control loop 1030. In some embodiments, the differentdisturbances to be applied to VCM control signal 743 can be part of asinusoidal waveform, a pulse of acceleration values, and/or selectedfrom random or pseudo-random noise. For example, in one embodiment, eachdisturbance to be applied to VCM control signal 743 is a sinewave of adifferent frequency. When each such disturbance is applied to VCMcontrol signal 743, a complete spectrum of the first transfer functioncan be measured.

In some embodiments, a control signal for an aggressor actuator (e.g.,VCM control signal 743) may be updated at the same rate at which theread/write head position 1005 is determined for a victim actuator. Suchsystems are generally referred to as single-rate control systems. Inother embodiments, a control signal for an aggressor actuator may beupdated at a higher rate than the rate at which the read/write headposition 1005 is determined for the victim actuator. For example, in anembodiment, the control signal for an aggressor actuator might beupdated at twice the rate at which the read/write head position 1005 forthe victim actuator is measured. Such systems are generally referred toas multi-rate control systems, and are known to one of skill in the art.For such systems, the relationship between the control signal for theaggressor actuator and the read/write head position 1005 of the victimactuator can be represented by multiple transfer functions. For theexample described above (in which VCM commands are updated at twice therate at which the read/write head position is determined), therelationship between the aggressor control signal (e.g., VCM controlsignal 743) and the read/write head position (e.g., radial position1005) can be represented by two transfer functions; one transferfunction between a signal that is made up of a first VCM control signal743 that is sent to the aggressor VCM (VCM 128A) each servo sample andthe victim's read/write head position 1005, and a secondtransfer-function between a signal that is made up of a second VCMcontrol signal 743 that is sent to the aggressor VCM (VCM 128A) eachservo sample and the victim read/write head position (radial position1005). For such systems, the disturbances to be applied to VCM controlsignal 743 could include disturbances to only the first of the twocontrol signals for each servo sample, disturbances to only the secondof the two control signals, or to both simultaneously. For such systems,determining the two transfer-functions could involve measuring theaggressor VCM control signal 743 and the response of the victimread/write head position to two or more different disturbance signals,and simultaneously solving for the two transfer-functions, based uponthe results of the multiple experiments. Such signal processing is knownto one of skill in the art.

Continuing with the case of a multi-rate control system, the processingthat was previously described for FIG. 16 is extended to apply to twofirst transfer functions. In step 1602, the first transfer functionwould consist of two transfer functions. In step 1604, determining thefeedforward transfer function for the victim head would consist of twotransfer functions. In step 1605, the victim feedforward kernel wouldconsist of two kernels; one which is applied to the first VCM controlsignal 743 that is applied to VCM 12A8 each servo sample, and anotherwhich is applied to the second VCM control signal 743 that is applied toVCM 128A each servo sample.

In step 1702, the controller applies the selected disturbance to the VCMcommand for the aggressor VCM. For example, in an instance in which VCM128A is the aggressor actuator and VCM 128B is the victim actuator, thedisturbance is added to filtered VCM control signal 743 before VCMcontrol signal 743 is applied to VCM 128A. In one such embodiment, thedisturbance is added to filtered VCM control signal 743 at injectionpoint 1029.

In step 1703, the controller measures the radial position of aread/write head 127 that is currently designated as the victim head.That is, the controller measures the response of the victim head (i.e.,radial positions of the victim head over a certain time interval) to thedisturbance applied in step 1702. The controller also measures the VCMcommands applied to the aggressor actuator. For example, in an instancein which VCM 128A is the aggressor actuator and VCM 128B is the victimactuator, the controller measures radial position 1005 of the currentlyactive read/write head associated with VCM 128B (i.e., the victim head),and the commands that were applied to the VCM 128A (i.e., VCM controlsignal 743). The commands applied to the aggressor actuator arecollected in step 1703 since such commands are not based solely on theselected disturbance applied in step 1702; such commands includecontroller-determined feedback values as well.

In some embodiments, the controller performs steps 1702 and 1703multiple times to reduce the influence of random noise and othernon-repeatable runout on the measured radial position of the victimhead. For example, the controller may perform steps 1702 and 1703 over aplurality of rotations of a storage disk 110. Alternatively oradditionally, in some embodiments, the controller performs steps 1702and 1703 at multiple circumferential locations of a recording surface112 to reduce the influence of repeatable runout on the measured radialposition of the victim head. In such embodiments, the controller mayalso perform steps 1702 and 1703 over a plurality of rotations of astorage disk 110.

In some embodiments, the effects of synchronous runout (also known as“written-in runout”) on the accuracy of measurements of the firsttransfer function are reduced. In such embodiments, the measurementsassociated with steps 1702 and 1703 are made in pairs. In suchembodiments, each pair of measurements is performed with addeddisturbances of equal amplitude and shape, but opposite sign, and withstarting times that are separated by an integer number of revolutions ofthe storage disk 110. The difference between the resulting victimposition (e.g., victim PES 1005) for such a pair of experiments should,to first order, be devoid of effects of synchronous runout, which mightotherwise degrade the accuracy of the transfer-function measurement. Thedifference between the resulting commands that were applied to theaggressor actuator should similarly be, to first order, devoid ofeffects of synchronous runout.

In step 1704, the controller stores the values of the measured positionof the victim head over the time extent of the experiment, and storesthe values of the commands that were applied to the aggressor actuatorover that same time extent. In some embodiments, the values stored arebased on multiple measurements made when the controller performs steps1702 and 1703 multiple times.

In step 1705, the controller determines whether there are any remainingdisturbances for which a resultant radial position of the victim head isto be measured. If yes, method 1700 returns to step 1701; if no, method1700 proceeds to step 1706.

In step 1706, the controller derives the first transfer function for thevictim head based on the values stored over the multiple iterations ofstep 1704. In some embodiments, the transfer function is determined asthe ratio of the spectrum of the victim measured position to thespectrum of the commands applied to the aggressor actuator. Method 1700then proceeds to step 1707 and terminates.

FIG. 18 sets forth a flowchart of method steps for determining atransfer function that models the radial position of a victim head as afunction of a disturbance added to a control signal that is applied to amicroactuator for positioning the victim head, according to anembodiment. For consistency with the description of method 1600 in FIG.16 , the transfer function is described herein as the “second transferfunction.” In some embodiments, the method steps are performed in HDD100 as part of a calibration/start-up process. For example, the methodsteps of FIG. 18 may be implemented in step 1603 of method 1600.Although the method steps are described in conjunction with HDD 100 ofFIGS. 1-17 , persons skilled in the art will understand that the methodsteps may be performed with other types of systems. The controlalgorithms for the method steps may reside in microprocessor-basedcontroller 133, motor-driver chip 125, or a combination of both. Thecontrol algorithms can be implemented in whole or in part as software-or firmware-implemented logic, and/or as hardware-implemented logiccircuits.

A method 1800 begins at step 1801, when a suitable controller (i.e.,microprocessor-based controller 133 and/or motor-driver chip 125)selects a disturbance (or microactuator control signal) for amicroactuator that is configured to position a read/write head 127currently designated as the victim head. For example, in an instance inwhich VCM 128A is the aggressor actuator and VCM 128B is the victimactuator, the controller selects a disturbance to microactuator controlsignal 745, which is to be applied to microactuator 1028B. Generally,the controller selects the disturbance from a plurality of disturbancesthat together facilitate the determination of the second transferfunction. For example, the plurality of microactuator commands mayinclude a range of different acceleration values that are each to beindividually applied to the microactuator during implementation ofmethod 1800. In some embodiments, the different disturbances to beapplied to microactuator control signal 745 can be part of a sinusoidalwaveform, a pulse of acceleration values, and/or selected from randomnoise. For example, in one embodiment, each disturbance to be applied tomicroactuator control signal 745 is a sinewave of a different frequency.Further, any of the other techniques described above in conjunction withmethod 1700 for measuring the first transfer function can be employedfor measuring the second transfer function in method 1800.

In step 1802, the controller adds the selected disturbance to themicroactuator control signal for positioning the victim head. Forexample, in an instance in which VCM 128A is the aggressor actuator andVCM 128B is the victim actuator, the disturbance is added tomicroactuator control signal 745, which is then applied to microactuator1028B. In the embodiment illustrated in FIG. 10A, the disturbance can beinjected between second servo controller 716 and notch filter 1021. Inthe embodiment illustrated in FIG. 10B, the disturbance can be injectedbetween notch filter 1021 and microactuator 1028B. In some embodiments,the selected disturbance is modified by a notch filter before beingapplied to the microactuator, and in other embodiments, the selecteddisturbance is modified by a second filtering portion of a notch filterbefore being applied to the microactuator.

In step 1803, the controller measures the radial position of aread/write head 127 that is currently designated as the victim head. Forexample, in an instance in which VCM 128A is the aggressor actuator andVCM 128B is the victim actuator, the controller measures radial position1005 of the currently active read/write head associated with VCM 128B(i.e., the victim head).

In some embodiments, the controller performs steps 1802-1804 multipletimes to reduce the influence of random noise and other non-repeatablerunout on the measured radial position of the victim head. For example,the controller may perform steps 1802-1804 over a plurality of rotationsof a storage disk 110.

In step 1804, the controller stores the value of the measured positionof the victim head over the time extent of the experiment. In someembodiments, the value stored is based on multiple measurements madewhen the controller performs steps 1802 and 1803 multiple times.

In step 1805, the controller determines whether there are any remainingdisturbances for which a resultant radial position of the victim head isto be measured. If yes, method 1800 returns to step 1801; if no, method1800 proceeds to step 1806.

In step 1806, the controller derives the second transfer function forthe victim head based on the values stored over the multiple iterationsof step 1804. In some embodiments, the transfer function is determinedas the ratio of the spectrum of the victim measured position to thespectrum of the added disturbance. Method 1800 then proceeds to step1807 and terminates.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

I claim:
 1. A computer-implemented method of controlling magnetic headposition in a disk drive that includes a first head for accessing afirst recording surface and a second head for accessing a secondrecording surface, the method comprising: determining first and secondcontrol signals that each cause a first actuator to position the firsthead relative to the first recording surface, wherein the first controlsignal is based on a first position signal generated by the first headpassing over a first servo wedge disposed on the first recording surfaceand the second control signal is based on a second position signalgenerated by the first head passing over a second servo wedge disposedon the first recording surface; determining a feedforward value thatmodifies a third control signal that is determined based on a thirdposition signal, wherein the third position signal is generated by thesecond head passing over a third servo wedge disposed on the secondrecording surface and the third control signal causes a second actuatorthat is coupled to the second head to position the second head relativeto the second recording surface; determining that the third positionsignal is generated by the second head passing over the third servowedge; and modifying the third control signal with the feedforward valuein response to the second head passing over the third servo wedge,wherein the feedforward value is generated based on the first and secondcontrol signals.
 2. The computer-implemented method of claim 1, whereinthe feedforward value is generated further based on a timing offsetbetween the first head and the second head.
 3. The computer-implementedmethod of claim 2, wherein the timing offset is less than a timeinterval separating a first time when the first head passes over thefirst servo wedge and a second time when the first head passes over thesecond servo wedge.
 4. The computer-implemented method of claim 2,further comprising generating the feedforward value by interpolatingbetween a first value associated with the first control signal and asecond value associated with the second control signal, wherein theinterpolating is based on the timing offset.
 5. The computer-implementedmethod of claim 1, wherein determining the feedforward value comprises:determining an interpolated control signal value that is interpolatedbetween a first value associated with the first control signal and asecond value associated with the second control signal; and determiningthe feedforward value based on the interpolated control signal.
 6. Thecomputer-implemented method of claim 5, further comprising: determiningthat a current timing offset value between the first head and the secondhead has changed from a previous timing offset value between the firsthead and the second head; and that at least a portion of the currenttiming offset value is caused by a timing shift associated with thefirst head.
 7. The computer-implemented method of claim 5, whereindetermining the feedforward value based on the interpolated controlsignal comprises generating the feedforward signal based on a firsttransfer function that models the feedforward signal as a function ofthe interpolated control signal.
 8. The computer-implemented method ofclaim 1, wherein determining the feedforward value comprises:determining a first feedforward value based on the first control signaland a second feedforward value based on the second control signal; anddetermining the feedforward value based on the first feedforward valueand the second feedforward value.
 9. The computer-implemented method ofclaim 8, wherein determining the feedforward value based on the firstfeedforward value based and the second feedforward value comprisesinterpolating between the first feedforward value and the secondfeedforward value.
 10. The computer-implemented method of claim 8,further comprising: determining that a current timing offset valuebetween the first head and the second head has changed from a previoustiming offset value between the first head and the second head; and thatat least a portion of the current timing offset value is caused by atiming shift associated with the second head.
 11. Thecomputer-implemented method of claim 8, wherein: determining the firstfeedforward value based on the first control signal comprises generatingthe first feedforward signal based on a transfer function that models afeedforward signal as a function of a control signal associated with thefirst head passing over a servo wedge disposed on the first recordingsurface; and determining the second feedforward value based on thesecond control signal comprises generating the second feedforward signalbased on the transfer function.
 12. The computer-implemented method ofclaim 1, further comprising, after modifying the third control signalwith the feedforward value, applying the third control signal to thesecond actuator.
 13. The computer-implemented method of claim 12,wherein applying the third control signal to the second actuatorcomprises applying the second control signal to the second actuatorbefore the second head passes over a fourth servo wedge that is disposedon the second recording surface and is circumferentially adjacent to thethird servo wedge.
 14. The computer-implemented method of claim 1,wherein the second actuator is configured to radially position thesecond head and not the first head.
 15. The computer-implemented methodof claim 1, wherein the first actuator includes a voice coil motor thatis configured to radially position the first head and not the secondhead.
 16. A disk drive, comprising: a first head for accessing a firstrecording surface of the disk drive and a second head for accessing asecond recording surface of the disk drive; and a controller configuredto perform the steps of: determining first and second control signalsthat each cause a first actuator to position the first head relative tothe first recording surface, wherein the first control signal is basedon a first position signal generated by the first head passing over afirst servo wedge disposed on the first recording surface and the secondcontrol signal is based on a second position signal generated by thefirst head passing over a second servo wedge disposed on the firstrecording surface; determining a feedforward value that modifies a thirdcontrol signal that is determined based on a third position signal,wherein the third position signal is generated by the second headpassing over a third servo wedge disposed on the second recordingsurface and the third control signal causes a second actuator that iscoupled to the second head to position the second head relative to thesecond recording surface; determining that the third position signal isgenerated by the second head passing over the third servo wedge; andmodifying the third control signal with the feedforward value inresponse to the second head passing over the third servo wedge, whereinthe feedforward value is generated based on the first and second controlsignals.
 17. The disk drive of claim 16, wherein the feedforward valueis generated further based on a timing offset between the first head andthe second head.
 18. The disk drive of claim 17, wherein the timingoffset is less than a time interval separating a first time when thefirst head passes over the first servo wedge and a second time when thefirst head passes over the second servo wedge.
 19. The disk drive ofclaim 17, the steps further comprising generating the feedforward valueby interpolating between a first value associated with the first controlsignal and a second value associated with the second control signal,wherein the interpolating is based on the timing offset.
 20. The diskdrive of claim 16, wherein determining the feedforward value comprises:determining an interpolated control signal value that is interpolatedbetween a first value associated with the first control signal and asecond value associated with the second control signal; and determiningthe feedforward value based on the interpolated control signal.